1.文件下载
访问资源时浏览器相应头如果没有设置Content-Disposition,浏览器默认按照inline值直接进行处理
inline能显示就直接显示,不能直接显示就下载。
只须要修正相应头中Content-Diposition=34;attachment;filenname=文件名"
个中attachment下载,以附件形式下载。
filename=值,便是下载时显示的下载文件名,
实现步骤
1.导入Apatch的两个jar
2.在JSP中添加超链接获取文件
<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"; }