文件上传
步骤1
需要在前端提供一个文件上传的表单,该表单需要满足:
1.method属性必须为post
2.enctype属性必须为multipart/form-data
3.提供< input type=“file” name=“filename” />的文件上传输入框
multiple HTML5新属性 可实现多文件上传
例如:
<form action="uploadUrl" method="post" enctype="multipart/form-data">
< input type="file" name="filename" multiple="multiple" />
< input type="submit" value="文件上传" />
</form>
步骤2
1.添加两个jar包到项目的lib目录里
commons-fileupload-1.3.2.jar
common-io-2.5.jar
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
2.在springmvc-config.xml配置文件中加入如下代码:
1.配置文件上传解析器 MultipartResolver
< bean id=“multipartResolver” class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”>
2.设置请求编码格式
< property name=“defaultEncoding” value=“UTF-8”>
< /bean >
<!-- 配置文件上传解析器 MultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置请求编码格式 -->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
若需要配置别的文件属性,还可以通过< property>元素来配置。
| 属性名 | 含义 |
|---|---|
| maxUploadSize | 上传文件的最大长度(以字节为单位) |
| maxInMemorySize | 缓存中的最大尺寸 |
| defaultEncoding | 默认编码格式 |
步骤3
在Controller中编写文件上传即可实现文件上传
以下是我自己照着书上打的代码,仅供参考哦
package com.controller;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;
import javax.imageio.IIOException;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class fileController {
@RequestMapping("/fileUpload")
public String handleFormUpload(@RequestParam("name")String name,@RequestParam("uploadfile") List<MultipartFile>
uploadfile, HttpServletRequest request) {
//判断文件是否为空是否有内容
if(!uploadfile.isEmpty() && uploadfile.size()>0) {
for(MultipartFile file : uploadfile) {
//获取上传文件的原始名称
String originalFilename = file.getOriginalFilename();
//设置上传文件的保存目录地址
String dirPath=request.getServletContext().getRealPath("/upload/");
File filePath = new File(dirPath);
//如果保存文件的地址不存在,就先创建目录
if(!filePath.exists()) {
filePath.mkdirs();
}
//使用UUID重新命名上传的文件名称(上传人——uuid_原始文件名称)
String newFilename = name+"_"+UUID.randomUUID()+
"_"+originalFilename;
try {
//使用MultipartFile接口的方法完成文件上传到指定位置
file.transferTo(new File(dirPath + newFilename));
}catch(Exception e) {
e.printStackTrace();
return "error";
}
}
return "success";
}else {
return "error";
}
}
}
运行页面:

上传成功即可显示success.jps页面
如果未更改过项目发布路径,则要去工作空间的metadata目录中找(我的路径为:D:\MySpring.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\springmvcFile\upload)
其中MySpring是我的eclipse的工作空间,springmvcFile是我的项目名称。
(希望这篇博客可以帮到你)

该博客介绍了Java Spring实现文件上传的步骤。前端需提供特定表单,可利用HTML5新属性实现多文件上传;项目要添加两个jar包,并在配置文件中配置文件上传解析器和请求编码格式;最后在Controller中编写文件上传代码,上传成功可显示指定页面。
420





