1. 程式人生 > >SSH註解實現單檔案上傳和下載

SSH註解實現單檔案上傳和下載

配置檔案省略

1.上傳頁面

<form action="upload.html" enctype="multipart/form-data" method="post">
    上傳檔案:<input type="file" name="upload" /><br />
    上傳日期:<input type="text" name="upDate" /><br />
    <input type="submit" value="提交" />
</form>

2.Action

@Controller
@ParentPackage("json-default")
public class UploadAction extends ActionSupport {
    private File upload;//要上傳的檔案物件(upload必須是頁面File控制元件的name屬性一致)
    private String uploadContentType;//要上傳檔案的型別(頁面File控制元件的name屬性+ContentType)
    private String uploadFileName;//要上傳的檔名稱(頁面File控制元件的name屬性+FileName)
    private String savePath;//獲取上傳檔案的儲存路徑
    private String InputStream inputStream;//下載檔案的輸入流
    private Date upDate;//上傳日期

    /**省略getter和setter**/

    /**上傳單個檔案**/

    @Action(value="upload",results={@Result(name="success",location="/upload.jsp")})
    public String upload(){
        byte[] buffer=new byte[1024];//緩衝資料,每秒以1kb的速度上傳檔案(可調)
        try{
            //讀取要上傳的檔案
            FileInputStream fis=new FileInputStream (upload);
            //獲得儲存的路徑,將檔案儲存在根目錄的upload的資料夾內
            savePath=ServletActionContext.getServletContext().getRealPath(/upload);

            //檢查上傳的資料夾是否存在,不存在則新建
            File file=new File(savePath);
            if(!file.exists()){
                file.mkdirs();
            }

            //對要上傳的檔案進行重新命名,避免上傳同一個檔案導致覆蓋
            //獲取原檔案的字尾名
            String exName=FilenameUtils.getExtension(uploadFileName);

            //生成新的檔名:當前系統時間+上傳檔案的雜湊值+字尾名
            String newName=System.currentTimeMillis+upload.hashCode()+"."+exName; 

            //將讀到的檔案儲存到制定位置
            FileOutputStream fos=new FileOutputStream(savePath+"\\"+newName);

            //用session儲存新的檔名
            ServletActionContext.getRequest().getSession().setAttribute("newName", newName);

            //使用緩衝讀入資訊並完成檔案的儲存工作
            int length=fis.read(buffer);
            while(length>0){//只要還能讀到東西就一直儲存
                fos.write(buffer,0,length);//從最開始的位置開始讀,直到最後的位置
                length=fis.read(buffer);
            }

            //關閉配置
            fis.close();
            fos.flush();
            fos.close();

        }catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return SUCCESS;
    }

    /**下載檔案**/
    @Action(value="download",results= {@Result(name="success",type="stream",params={"contentType","application/octet-stream",
        "inputName","inputStream",
        "contentDisposition","attachment;filename=${uploadFileName}",
        "bufferSize","4096"})})//type="stream" "attachment;filename=${uploadFileName}" 中的${uploadFileName}是下載的檔案的檔名,"bufferSize","4096"是下載的緩衝
public String download(){
    return SUCCESS;
}
}

相關推薦

SSH註解實現檔案下載

配置檔案省略 1.上傳頁面 <form action="upload.html" enctype="multipart/form-data" method="post"> 上傳檔案:<input type="file" name

JAVA實現SFTP檔案下載(利用JSCH.jar)

原文連結:https://my.oschina.net/hetiangui/blog/137357如果你想用純JAVA實現SFTP檔案上傳或下載,或者是想純JAVA連線到SSH2伺服器上執行命令,那就使用JSch.jar包吧。這裡我們先描述實現SFTP協議的上傳和下載,上程式

Struts2的檔案下載(1)檔案

在struts2中整合fileuoload功能,因為在匯入的jar包中包含了common-fileipload.jar檔案 在struts2中的interceptor 中有一個fileupload攔截器,他的主要功能就是完成檔案上傳。 注意事項 method=post

ASP.NET實現檔案下載

###### 本文的開發配置 ###### .NET版本:.NET Framework 4.0 開發環境:Microsoft Visual Studio 2013 瀏覽器:IE、Chrome、FireFox等都行   1、搭建網站結構 建立一個新的目錄

基於DiskFileItemFactory實現檔案進度監聽

             10月1假期圓滿結束,在家裡躺了5天,啥也沒幹,回來的時候家裡還給我拿了螃蟹什麼的,昨天就讓我吃了,哈哈哈。               這幾天一直想實現以下檔案的上傳和檔案上傳時顯示進度條,看了幾個部落格,照著自己敲了一下,將自己不明白的地方也查

Java實現檔案下載

上面的博文我寫了Java對檔案操作的功能https://blog.csdn.net/qq_24380635/article/details/83273359,這次記錄一下檔案上傳和下載的功能。看看兩者有什麼不同,就可以知道檔案操作和檔案上傳下載有什麼不同了。我也是一點點懂,也

Java 實現ftp 檔案下載刪除

本文利用apache ftp工具實現檔案的上傳下載和刪除。具體如下: 1、下載相應的jar包      commons-net-1.4.1.jar 2、實現程式碼如下: public class FtpUtils { //ftp伺服器地址

MAC使用rzsz實現伺服器之前的檔案下載

開發人員在開發時有時會遇到需要在本機和開發機之間傳檔案的問題。雖然Mac下的scp命令可以完成檔案的上傳和下載功能,但如果開發機的登陸需要經過跳板機時,scp命令就沒有辦法正常使用了。 Window上可以用rx,sz命令上傳,下載檔案,Mac下也可以。下面介紹一下Mac O

ThinkPHP遇到的問題:檔案檔案

if($_FILES['pic']['tmp_name']){     $upload = new \Think\Upload();// 例項化上傳類     $upload->maxSize

Android Retrofit2.0實現檔案下載

這篇主要介紹retrofit框架的上傳檔案到伺服器和從伺服器下載功能的實現 上傳檔案到伺服器 首先 retrofit2.0之前上傳檔案到伺服器需要一個叫TypedFile這個類,但是在2.0版本,這個類被取消了,因為2.0以後,retrofit內部集成了okhttp

關於JSch的使用,執行ssh命令,檔案下載以及連線方式

最近在做一個SAAS服務的專案,SAAS就是軟體即服務,具體可以去問度娘,然後底層呢需要遠端執行SSH命令來進行支援,最後就選擇了JSch來完成這個工作。 JSch是SSH2的一個純JAVA實現。它允許你連線到一個sshd伺服器,使用埠轉發,X11轉發,檔案傳輸等等。 大致

spring實現檔案下載 完整方案

1. 簡介 提供基於spring實現檔案(筆記附件)的上傳和下載的完整方案。方案將檔案上傳,並將檔名稱作為欄位與關聯的筆記繫結在一起,更新筆記在資料庫中的記錄。顯示筆記時,根據筆記所繫結的檔名生成下載

實現檔案(1)

public void uploadFile(MultipartFile bigHeandImg)throws Exception{ String originalFilename=bigHeadImg.getOriginalFilename(); String uuid=UUID.rand

SpringBoot實現檔案下載

SpringBoot後臺如何實現檔案上傳下載? 最近做的一個專案涉及到檔案上傳與下載。前端上傳採用百度webUploader外掛。有關該外掛的使用方法還在研究中,日後整理再記錄。本文主要介紹SpringBoot後臺對檔案上傳與下載的處理。 單檔案上傳 // 單檔案上傳 @RequestMapp

Retrofit實現檔案下載【二】

概述 通過前一篇的部落格介紹,我們已經對Retrofit的使用有了一個大概的瞭解,今天來講講利用Retrofit進行檔案的上傳和下載 檔案上傳 伺服器使用的是SSH框架,因此這裡是以struts2的方式來獲取資料的,我這裡定義了三個欄位用來接收上傳過來

基於tobato的fastdfs與spring boot整合實現檔案下載

專案結構: pom.xml檔案新增配置: <!-- fastdfs --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastd

檔案下載

檔案上傳和下載的實質:檔案拷貝 檔案上傳:從本地拷貝到伺服器磁碟上   客戶端需要編寫檔案上傳表單---->服務端需要編寫程式碼接受上傳的檔案 檔案下載:從伺服器磁碟上拷貝到本地磁碟   需要編寫服務端的程式碼,客戶端的下載的工作瀏覽器核心解決的

如何在基於Java的Web專案中實現檔案下載

在Sevlet 3 以前,Servlet API中沒有支援上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的檔案,我們推薦使用Apac

在SpringMVC框架中實現檔案下載

首先在springmvc.xml中配置檔案上傳的屬性 <!-- 檔案上傳的屬性值 --> <bean id="multipartResolver" class="org.springframework.web.multi

input file檔案FileReader物件的基本使用

多說無益,擼出的程式碼才是鐵的事實。。。 建議:可以先看程式碼再看步驟也挺不錯。。。 第一步:在上傳框change的時候,獲取自帶的files物件,一般獲取到的為files[0],如下面程式碼 oFlieImg.onchange = function(e){ var