MultipartFile 多文件上传的应用
公司的项目很多地方要用到文件上传,以前的上传主要是用apache的fileupload ,使用的感受并不太好。今天试了试spring的MultipartFile,感觉还不错,封装的比较简洁。
当然,中间也排除了不少坑。
1. 配置CommonsMultipartResolver
<!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="209715200"/>
<property name="maxInMemorySize" value="4096"/>
<property name="uploadTempDir" value="fileUpload/temp"/>
</bean>
defaultEncoding="UTF-8" 是请求的编码格式,默认为iso-8859-1
maxUploadSize="209715200" 是上传文件的总的大小,单位为字节,我设置的是200M,
uploadTempDir="fileUpload/temp" 为上传文件的临时路径
2. 添加apache的 fileupload
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
应该是multipartfile方式上传底层也会用到commons-fileupload
3.前端用了jquery file upload
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>选择文件...</span>
<!-- The file input field used as target for the file upload widget -->
<input id="fileupload" type="file" name="file[]" multiple>
</span>
#jquery file upload 没有采用form表单上传,是ajax方式向后台发送的请求,
#如果是以表单形式提交上传请求,不要忘了加上enctype="multipart/form-data"
... $('#fileupload').fileupload({
url: "<%=request.getContextPath()%>/aaa/upload.do",
sequentialUploads: true,
singleFileUploads: false,
add: function (e, data) {
data.context = $('<button/>').text('Upload')
.appendTo(document.body)
.click(function () {
data.context = $('<p/>').text('Uploading...').replaceAll($(this));
data.submit();
});
},
done: function (e, data) {
$.each(data.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
}); }
});
jquery file upload 看起来还不错,就是中文的资料还是有点少,官网看的头大。
4.后台是我们的重点,其实我想说,我本来只是想周末找一个好用,好看的前端上传插件的,结果重点弄到后台来了。。
由于配置了CommonsMultipartResolver,文件上传请求HttpServletRequest会被解析为MultipartHttpServletRequest
/**
* 多文件上传
*
* @param multipartRequest
* @return
* @throws IOException
*/
@ResponseBody
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String handleImport(DefaultMultipartHttpServletRequest multipartRequest) throws IOException {
if (multipartRequest != null) {
Iterator<String> iterator = multipartRequest.getFileNames();
while (iterator.hasNext()) { // //单文件上传 。
// MultipartFile file = multipartRequest.getFile(iterator.next());//一次传一个文件
// if (StringUtils.hasText(file.getOriginalFilename())) {
// file.transferTo(new File("E:/upload_" + file.getOriginalFilename()));
// } //多文件上传
List<MultipartFile> fileList = multipartRequest.getFiles(iterator.next()); //一次选多个文件上传
for (MultipartFile file : fileList) {
if (StringUtils.hasText(file.getOriginalFilename())) {
file.transferTo(new File("E:/upload_" + file.getOriginalFilename()));
}
}
}
}
return "success";
}


MultipartFile 多文件上传的应用的更多相关文章
- 利用spring的MultipartFile实现文件上传【原】
利用spring的MultipartFile实现文件上传 主要依赖jar包 spring-web-3.0.6.RELEASE.jar 用到 (org.springframework.web.multi ...
- SpringMvc MultipartFile 图片文件上传
spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...
- SpringMVC 使用MultipartFile实现文件上传(转)
http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们 ...
- SpringMVC中使用 MultipartFile 进行文件上传下载及删除
一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...
- SpringMVC 使用 MultipartFile 实现文件上传
该代码实现了文件上传和文本字段同时传递到后台进行处理的功能. 直接贴代码,中间涉及到的实体类就不贴了,和功能没啥关系的. Controller /** * 添加活动 * * @param req * ...
- Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)
准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...
- springMVC实现 MultipartFile 多文件上传
1.Maven引入所需的 jar 包(或自行下载) <dependency> <groupId>commons-io</groupId> <artifactI ...
- MultipartFile实现文件上传
一.主要有两个java类,和一般的servlet放在一起即可. 1.FileUploadBean.java package chb.demo.web;import org.springframewor ...
- 文件上传之 MultipartFile
利用MultipartFile(组件)实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Mult ...
随机推荐
- 1.3eigen中数组类和系数的运算
1.3数组类和系数的运算 与矩阵类只适用与线性代数运算相反,数组类提供通用的数组类,能不利用线性代数的知识来对系数进行操作,比如对每个系数加上一个常数,或者乘上两个数组的系数. 1.数组类型 跟矩阵类 ...
- python环境问题(pycharm)
一.问题 我们在使用python的时候会遇到环境配置问题.如何可以一劳永逸,是我们解决问题的基本思想. 二.解决1.新建环境: 2.添加环境:选择需要的环境,可以是conda,亦可以是virtual. ...
- bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
找到驱动切换的代码,自然而然就要找实现的位置了,简单搜了下,原来是GLSL Shader字节码转换到HLSL字节码,正好和Klayge做了相反的工作. 时间上似乎也差不多,Klyage是2014年搞的 ...
- drf2 FBV和CBV
FBV 基于函数的视图 CBV 基于类的视图 也就是说我们是用函数编写视图~还是类编写视图 urlpatterns = [ path('admin/', admin.site.urls), path( ...
- qhfl-7 结算中心
结算中心,即从购物车前往支付前的确认页面,这里要开始选择优惠券了 """ 前端传过来数据 course_list 课程列表 redis 中将要存放的结算数据 { sett ...
- python实现netcat部分功能源代码
#!/opt/local/bin/python2.7 import sys import socket import getopt import threading import subprocess ...
- Makefile基础学习
Makefile基础学习 理论知识 makefile关系到了整个工程的编译规则.一个工程中的源文件不计其数,并且按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文 ...
- java数组-如何在一堆数据中使用数组!
数组 1.类型一致的一组数据,其实相当于集合概念. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素(item),每个数组元素可以通过一个下标/索引来 ...
- Vue 父组件ajax异步更新数据,子组件props获取不到
转载 https://blog.csdn.net/d295968572/article/details/80810349 当父组件 axjos 获取数据,子组件使用 props 接收数据时,执行 mo ...
- web API简介(四):客户端储存之IndexedDB API
概述 前篇:web API简介(三):客户端储存之Web Storage API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. Index ...