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