1.文件下载

访问资源时浏览器相应头如果没有设置Content-Disposition,浏览器默认按照inline值直接进行处理

inline能显示就直接显示,不能直接显示就下载。

jsp下载zip附件Springmvc文件上传和下载 React

只须要修正相应头中Content-Diposition="attachment;filenname=文件名"

个中attachment下载,以附件形式下载。

filename=值,便是下载时显示的下载文件名,

实现步骤

1.导入Apatch的两个jar

2.在JSP中添加超链接获取文件

&lt;a href="/web/download?fileName=a.txt">下载2</a>

3.springmvc中放行静态资源files

4.编写掌握器的方法

@RequestMapping("download") public void download(String fileName,HttpServletResponse res,HttpServletRequest req) throws IOException{ //设置相应流中文件进行下载 res.setHeader("Content-Disposition", "attachment;filename="+fileName); //把二进制流放入到相应体中. ServletOutputStream os = res.getOutputStream(); String path = req.getServletContext().getRealPath("files"); System.out.println(path); File file = new File(path, fileName); byte[] bytes = FileUtils.readFileToByteArray(file); os.write(bytes); os.flush(); os.close(); }

文件上传

1。
基于Apache的commons-fileupload.jar完成上传

2.MultipartResover 浸染:把客户真个文件流转换成MutipartFile封装类

3.通过MutipartFile封装类获取到文件流

4.在JSP中表单数据的分类

5.表单数据类型分类

在<form>的enctype属性掌握表单的类型,默认值为(),表示普通表单是数据,(少量笔墨信息) ,

text/plain 大笔墨量时利用的类型,邮件,论文

multipart/form-data 表单中包含二进制文件内容。

实现步骤:

导入springmvc包和apache文件上传commmons-fileupload和commons-io两个jar

编写jsp页面

<body> <a href="../files/teacher.zip">下载</a> <a href="/web/download?fileName=a.txt">下载2</a> <form action="/web/upload" enctype="multipart/form-data" method="post"> 姓名:<input type="text" name="name"><br> 文件:<input type="file" name="file"/><br> <input type="submit" value="提交"> </form> </body>

get是字符流,post是字节流

配置springmvc.xml

<!--MultipartResolver解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--只要声明出解析器就行了--> <!--如果要限定文件大小--> <property name="maxUploadSize" value="5000"> </property> </bean> <!--非常解析器--> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props > <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">jsp/error</prop> </props> </property> </bean>

编写掌握器类(Multi part File工具名必须和<input type="file"/>的name属性相同)

@RequestMapping("upload") public String upload(MultipartFile file,String name) throws IOException { //MultipartResolver mr=null; System.out.println("name:"+name); String filename = file.getOriginalFilename(); final String suffix = filename.substring(filename.lastIndexOf(".")); if (suffix.equalsIgnoreCase(".png")){ String uuid = UUID.randomUUID().toString(); System.out.println(uuid); FileUtils.copyInputStreamToFile(file.getInputStream(),new File("D:/"+uuid+suffix)); return "index"; }else { return "jsp/main"; }