基于SpringMVC的文件上传和下载总结。
配置:
在SpringMVC配置文件中引入Spring处理文件上传的Bean,如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="uploadTempDir" value="upload/temp"></property> </bean>
文件上传:
注意点包括:
1.文件上传域的表单的属性enctype必须为"multipart/form-data";带有文件域的表单提交后会刷新页面,也可以使用异步文件上传方式,参考->http://lpyyn.iteye.com/admin/blogs/2061960。
2.使用SpringMVC处理上传,文件上传的request请求类的为MultipartRequest,获取的文件为MultipartFile。其中MultipartFile可以在方法参数中,也可以通过MultipartRequest获取。参考代码如下:
@RequestMapping("upload") @ResponseBody public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception{ logger.info("保存文件->"+file.getOriginalFilename()+" size->"+file.getSize()); return "ok" ; }
文件下载:
文件下载根本上是将文件的内容写入到response的outputStream中,Spring封装了一个ResponseEntity,其中封装了response的操作,但是它对outputStream是只读操作,在创建ResponseEntity时就要将outputStream对象作为参数传入到构造函数中。因此,文件的下载选择直接使用response对象。
使用response对象需要设置返回内容的编码类型、内容类型和附件信息。参考代码如下:
/** * 使用此种格式获取rest地址中文件名称及扩展名 * @param fileName * @param format * @param response * @throws Exception */ @RequestMapping("download/{fileName}.{format}") public void downloadFile(@PathVariable(value="fileName") String fileName, @PathVariable(value="format") String format,HttpServletResponse response) throws Exception{ fileName += "."+format ; logger.info("下载文件->"+fileName); //设置response对象的编码和内容类型 response.setCharacterEncoding("utf-8"); //设置内容编码类型为multipart/form-data(二进制文件上传和下载使用的格式) response.setContentType("multipart/form-data"); //需要单独设置文件编码格式,只支持ISO8859-1编码格式,使用GBK编码,支持中文,UTF-8不支持中文。 response.setHeader("Content-Disposition", "attachment;fileName="+new String(fileName.getBytes("GBK"), "ISO8859-1")); //直接使用response对象的输出流,避免在系统中创建文件输出流 fileService.get(response.getOutputStream(),fileName) ; //不使用SpringMVC自带的ResponseEntity对象,是因为ResponseEntity的Body是只读对象 }
有时候直接向response.getOutputStream()中写东西有可能会失败,可以将ByteArrayOutputStream做为一个中间件,先向ByteArrayOutputStream中写数据,然后再通过response.getOutputStream()输出数据,如下:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream() ; fileService.get(byteArrayOutputStream , fileName) ; OutputStream outputStream = response.getOutputStream() ; outputStream.write(byteArrayOutputStream.toByteArray()) ; outputStream.flush() ; outputStream.close() ; byteArrayOutputStream.close() ;
相关推荐
基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...
本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中。开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成类。
用springMVC 实现文件的上传、下载,含文件的压缩功能。
开发工具:eclipse+tomcat+jdk1.7 基于springMVC的文件上传功能
由于需要我们需要在项目里自己写文件的上传和下载。这里分别有基于SpringMVC的上传和基于SSH的上传下载,欢迎下载。
提供基于SpringMVC的文件上传、下载、更新、删除的整个项目开发代码
SpringMVC文件上传下载 @Controller @RequestMapping(value="/file") public class FileController { @Resource private User user; @RequestMapping(value="/toUpload") public String toUpload(){ return...
用springmvc3基于注解方式实现的文件上传与下载,多种方式实现
基于SpringMVC的文件上传(兼容IE8),一个完整的Demo。
基于springmvc框架的上传文件程序,可运行,java开发语言
spring mvc基于MultipartHttpServletRequest上传文件/图片的项目实例
项目为Java网盘文件管理系统,后端本课题采用springmvc框架搭建,数据库用oracle,jdk1.8。前端采用zui作为前端框架,jquery Ajax, 前后端分离。分为后台端和用户端 ...3文档上传下载 4,积分流水
java上传文件的实现,基于SpringMVC框架.zip
系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuery+Bootstrap等主流技术; 流程引擎基于Snaker工作流;表单设计器基于雷劈网WEB表单设计器。 系统主要功能有: >1.系统管理 >>系统管理包含有:基础...
java 基于springMVC多图片上传,MySQL源码 @Controller @RequestMapping("/upload") public class UploadFileController { @Autowired private UploadFileService uploadFileService; @RequestMapping("/...
基于springMVC+spring+hibernate+maven头像上传的实现
该demo基于springmvc,监听spring的processerListener接口,实现对上传数据的更新,同时采用进度条显示当前上传情况。
项目为Java网盘文件管理系统,后端本课题采用springmvc框架搭建,数据库用oracle,jdk1.8。前端采用zui作为前端框架,jquery Ajax, 前后端分离。分为后台端和用户端 ...3文档上传下载 4,积分流水
本文通过实例代码给大家介绍SpringMVC文件上传的配置相关内容,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
一个基于SpringMVC的web框架 1.0.5 从web项目迁移成maven项目 1.0.6 增加菜单框架ext实现,类路径调整 1.0.7 增加http工具类,demo例子 1.0.8 socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具...