SpringMvc文件上传和下载
最近博主在做SpringMvc文件上传和下载的功能实现,上网查了很多资料很多都不太符合理想,找啊找,终于找到一个可以用的,然后再此基础上,我加以改进,可以支持多文件上传,而且代码非常精简,大家可以看看.
http://pan.baidu.com/s/1o7Oo4NC 原码下载
首先需要导入jar包:
然后,在applicatinContext.xml中添加上传和下载的配置文件,如下:
<!-- 文件上传的配置 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="200000"/> </bean> <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到WebContent目录下的error.jsp页面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error</prop> </props> </property> </bean>
好了,最基础的配置就好了,接下来jsp页面:upload.jsp
<form action="upload.do" method="post" enctype="multipart/form-data">文件1: <input type="file" name="myfiles"/><br/> 文件2: <input type="file" name="myfiles"/><br/> 文件3: <input type="file" name="myfiles"/><br/> <input type="submit" value="上传">
</form>
Controller中对应的java代码:
@RequestMapping("/upload.do")public String upload(@RequestParam MultipartFile[] myfiles, HttpServletRequest request) throws IOException {for (MultipartFile file : myfiles) {// 此处MultipartFile[]表明是多文件,如果是单文件MultipartFile就行了if (file.isEmpty()) {System.out.println("文件未上传!");} else {// 得到上传的文件名String fileName = file.getOriginalFilename();// 得到服务器项目发布运行所在地址String path1 = request.getSession().getServletContext().getRealPath("image") + File.separator;// 此处未使用UUID来生成唯一标识,用日期做为标识String path = path1 + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + fileName;// 查看文件上传路径,方便查找System.out.println(path);// 把文件上传至path的路径File localFile = new File(path);file.transferTo(localFile);}}return "uploadSuccess";}
这样就可以把网页上选择的图片上传上去了
下载成功了!
文件下载
(文件下载我是参照网上一位前辈的,在此注明他的博客网址:http://my.oschina.net/u/1394615/blog/311307):
download.jsp:此处为了测试,我直接把文件名当作参数传过去:
<a href="download.do?fileName=2016082312271111111.jpg">下载</a>
Controller:
@RequestMapping("/download")public String download(String fileName, HttpServletRequest request, HttpServletResponse response) {response.setCharacterEncoding("utf-8");response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);try {String path = request.getSession().getServletContext().getRealPath("image") + File.separator;InputStream inputStream = new FileInputStream(new File(path + fileName));OutputStream os = response.getOutputStream();byte[] b = new byte[2048];int length;while ((length = inputStream.read(b)) > 0) {os.write(b, 0, length);}// 这里主要关闭。os.close();inputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 返回值要注意,要不然就出现下面这句错误!// java+getOutputStream() has already been called for this responsereturn null;}
OK,springmvc的上传下载就完成了!
SpringMvc文件上传和下载相关推荐
- SpringMVC 文件上传及下载
文件下载 inline 访问资源时如果没有设置响应头Content-Disposition,浏览器默认按照inline进行处理 inline:能显示就显示,不能显示就下载 响应头 只需修改响应头Con ...
- 【Spring】SpringMVC文件上传与下载
对于上传功能,我们在项目中是经常会用到的,比如用户注册的时候,上传用户头像,这个时候就会使用到上传的功能.而对于下载,使用场景也很常见,比如我们项目中有个使用说明是是pdf版的,会提供给用户进行下载的 ...
- spring-mvc文件上传与下载
上传: 下载: 所依赖的包: 核心servlet: applicationContext.xml: 转载于:https://www.cnblogs.com/mywawa/p/6970260.html
- Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点
前言 (补充:再linux服务器上可能没用创建文件的权限,那就需要找到文件夹给权限,比如我的chmod -R 777 /home/tomcat/apache-tomcat-default/webapp ...
- springMVC的文件上传于下载
springMVC的文件上传于下载 1.springmvc 文件的上传也是借助于两个工具所以需要添加两个jarapache-commons-fileupload.jarapache-commons-i ...
- SpringMVC——文件上传下载,异步请求和SSM整合
一,SpringMVC文件上传下载 1.1 同步 1.1.1 文件上传 第一步:定义上传表单 <form action="${pageContext.request.contextPa ...
- 最全面的SpringMVC教程(五)——文件上传与下载
前言 本文为 [SpringMVC教程]文件上传与下载 相关知识,具体将对使用MultipartResolver处理文件上传的步骤,两种文件下载方式(直接向response的输出流中写入对应的文件流. ...
- 使用SpringMVC框架实现文件上传和下载功能
使用SpringMVC框架实现文件上传和下载功能 (一)单个文件上传 ①配置文件上传解释器 <!-配置文件上传解释器 --> <mvc:annotation-driven>&l ...
- SSM之SpringMVC 04 —— Ajax、拦截器、文件上传和下载
系列文章 SSM之SpringMVC 01 -- SpringMVC原理及概念.Hello SpringMVC 注解版和配置版 SSM之SpringMVC 02 -- Controller和RestF ...
最新文章
- centos6.4下LVS+keepalived的高可用(LVS/DR模式)
- 【Cocosd2d实例教程七】Cocos2d实现超炫的粒子效果!!
- python读取rar文件_在 python 中,如何读取由 7z 压缩的文本文件_python_酷徒编程知识库...
- linux cpp vscode远程调试 的配置
- CentOS 下线,TencentOS Server 全新登陆带来最强支持
- Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
- Js中caller和callee的区别
- 变形金刚热映黑客借机“下毒” 用户谨防木马
- oracle查询题目2道
- 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配
- win7系统的自动更新很长时间,如何关闭
- Wide Deep 模型详解
- win10 java8安装包双击之后完全没反应
- 传染病模型——波利亚坛子
- 迭代器模式之看芒果台还是央视nie?
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx分解线xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Java高级开发必备--Docker进阶(一篇详细教程,进阶Docker)
- 计算机密码学学习笔记(二)——Shannon理论
- Net Core WebApi自定义拦截特性简单实现
- 2021年成都列五高中高考成绩查询,2021年成都高考各高中成绩及本科升学率数据排名及分析...