Java上传下载功能的实现
2018-07-20 来源:open-open
上传下载是很简单的功能,但是每次用的时候还是要查,这里整理一下
前台:
<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); } }
标签: isp
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:C++ 实现矩阵相乘
下一篇:C++日期和时间戳相互转换的代码