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