SpringMVC文件下载
一、.访问资源时响应头如果没有设置Content-Disposition,浏览器默认安装inline进行处理
能显示就显示,不能就下载
二、只需修改响应头Context—Disposition="attachment;filename=文件名"
attachment以附件形式下载
filename=文件名,就是下载时显示的文件名
三、.实现步骤
1、导入Apache 两个jar包
2、‘jsp中添加超链接,设置要下载的文件
<a href="download?fileName=a.txt">下载</a>
3、springMVC中放行静态资源files文件夹
4、编写控制器方法
1 //** 文件下载 2 @RequestMapping("download") 3 public void download(String fileName,HttpServletRequest req, HttpServletResponse res) throws IOException { 4 //PrintWriter out =res.getWriter();输出字符流 5 //输出二进制字节流 6 //res.setContentType(); 7 res.setHeader("Content-Disposition","attament;filename="+fileName);//上面等效,xx.txt下载时文件名 8 //二进制字节流放响应体中 9 ServletOutputStream os=res.getOutputStream(); 10 // req.getServletContext()取应用程序对象 11 // getRealPath("files")获取资源文件夹完整路径,java获取文件路径必须从磁盘根目录 12 String path = req.getServletContext().getRealPath("files"); 13 System.out.println(path); 14 File file = new File(path, fileName); 15 byte[] bytes = FileUtils.readFileToByteArray(file); 16 os.write(bytes); 17 os.flush(); 18 os.close(); 19 }
SpringMVC文件上传
一、.基于Apache的commons-fileupload.jar完成文件上传
二、’.MultipartResovler作用
把客户端上传的文件流转换成MultipartFile封装类,通过MultipartFile封装类获取到文件流
三、.表单数量类型分类
1、在<form>的enctype属性控制表单类型
默认值:enctype="application/x-www-form-urlencoded" 普通表单数据(少量文字信息)
2、 text/plain 大量文字信息时,如邮件
3、multipart、form-data表单中包含二进制文件内容
四.实现步骤
.1、导入SpringMVC包和Apache的commons-fileupload.jar和commons-io包
.2、编写JSP
<!--method用post,post是字节流最大2GB,get字符流最大2KB-->
<form action="upload" method="post" enctype="multipart/form-data">
姓名<input type="text" name="name"><br/>
文件<input type="file" name="file"><br/>
<input type="submit" value="提交">
</form>
3、配置springmvc.xml
<!--MultipartResolver解析器,文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="20000"></property>
</bean>
<!--异常解析器-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings" >
<props>
<!--上传文件大小超过设置字节数时跳转-->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">/error.jsp</prop>
</props>
</property>
</bean>
4、编写控制器
MultipartFile对象名必须和<input type"file"/>的nama属性相同
1 //文件上传 2 @RequestMapping("upload") 3 public String upload(MultipartFile file,String name) throws IOException { 4 5 String filename = file.getOriginalFilename(); 6 String suffix=filename.substring(filename.lastIndexOf(".")); 7 //判断文件类型 8 if(suffix.equalsIgnoreCase(".png")){ 9 String uuid=UUID.randomUUID().toString(); 10 FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/"+uuid+suffix)); 11 return "index.jsp"; 12 }else{ 13 return "error.jsp"; 14 15 } 16 }
来源:https://www.cnblogs.com/code-coffee/p/10267068.html