Java上傳下載功能的實現

jopen 9年前發布 | 2K 次閱讀 Java

上傳下載是很簡單的功能,但是每次用的時候還是要查,這里整理一下

前臺:

  <form action="xxoo.do" enctype="multipart/form-data" method="post">
    <input type="file" name="file" />
     <button type="submit" class="btn btn-primary"> 提交
  </form>

主要注意:

 enctype="multipart/form-data" method="post"

后臺:

各種框架都有自己的上傳下載功能,實現也是大同小異,說到底上傳就是復制文件,需要一個輸出流。通過firebug以看到上傳時,會有兩個參數傳到后臺,一個是文件流,這個變量名與input 中的name一致;還有一個就是文件名,默認是filename。

如果使用struts2。文件名是文件流的變量名+FileName。如上是fileFileName。

后臺直接:FileUtils.copyFile(shopDatas, tempFile);這里沒有使用框架的上傳功能


下載的話,實際上就是傳一個inputstream,往外讀數據。懶得使用框架的功能,可以直接使用response響應


public void downLoad(String newFileName){
    InputStream is = null;
    OutputStream os = null;
    HttpServletResponse response = ServletActionContext.getResponse();
    try{
        String contentType="application/octet-stream";  
        response.setContentType(contentType);  
        response.setHeader("Content-disposition","attachment;filename=\""+newFileName+"\"");
        is=new BufferedInputStream(new FileInputStream(newFileName));        
        ByteArrayOutputStream baos=new ByteArrayOutputStream();  
        os=new BufferedOutputStream(response.getOutputStream());       
        byte[] buffer=new byte[4*1024];   
        int read=0;    
        while((read=is.read(buffer))!=-1){  
            baos.write(buffer,0,read);  
        }  
        os.write(baos.toByteArray());  
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            closeStream(os, is);
        }

    }


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!