清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
上传下载是很简单的功能,但是每次用的时候还是要查,这里整理一下
前台:
1 2 3 4 | < form action = "xxoo.do" enctype = "multipart/form-data" method = "post" > < input type = "file" name = "file" /> < button type = "submit" class = "btn btn-primary" > 提交 </ form > |
主要注意:
1 | enctype="multipart/form-data" method="post" |
后台:
各种框架都有自己的上传下载功能,实现也是大同小异,说到底上传就是复制文件,需要一个输出流。通过firebug以看到上传时,会有两个参数传到后台,一个是文件流,这个变量名与input 中的name一致;还有一个就是文件名,默认是filename。
如果使用struts2。文件名是文件流的变量名+FileName。如上是fileFileName。
后台直接:FileUtils.copyFile(shopDatas, tempFile);这里没有使用框架的上传功能
下载的话,实际上就是传一个inputstream,往外读数据。懒得使用框架的功能,可以直接使用response响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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); } } |