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 ...
随机推荐
- 搭建Fabric网络(二)下载bin和images
上一篇已经把运行和开发Fabric需要的程序都安装好了,这一篇主要讲怎么运行一个简单的Fabric网络. 1. 下载官方Sample代码 git clone -b master https://gi ...
- mysql自动删除90天前数据
#coding:utf-8import MySQLdb #方法1直接在Navicat中添加计划任务#DELETE FROM message2 where SEND_TIME < UNIX_TIM ...
- GUI学习之〇——PyQt5安装
GUI(Graphical User Interface)是程序和软件使用者的接口,好的GUI是一个良好的软件的前提,在这里演示一下用PyQt5做一个GUI的方法 软件需求:python3.6 用的是 ...
- c++沉思录 学习笔记 第五章 代理类
Vehicle 一个车辆的虚基类 class Vehicle {public: virtual double weight()const = 0; virtual void start() = 0; ...
- 将小程序的logo换成属于自己的头像
$logo = file_get_contents(IMG_URL.$logo); //根据头像的路径 $logo = yuanImg1($logo); //将头像改为圆形 $data = file_ ...
- JavaSE 初学进度条JProgressBar
预备知识 创建进度条类后将其直接加入JFrame看看效果 public class JProgressBarDemo2 { public static void main(String args[]) ...
- 通过JDBC进行简单的增删改查(以MySQL为例) 目录
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- 团队-爬取豆瓣电影TOP250-开发环境搭建过程
从官网下载安装包(http://www.python.org). 安装Python 选择安装路径(我选的默认) 安装Pycharm 1.从官网下载安装包(https://www.jetbrains.c ...
- VM无法连接到虚拟机
The VMware Authorization Service is not running. 原因 虚拟机服务没有开启 解决方法 1. 我的电脑右击->管理 2. 打开服 ...
- PMP:7.项目成本管理
内容中包含 base64string 图片造成字符过多,拒绝显示