直接上代码
1.controller层代码
//文件上传用到的文件包
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
......
@RestController
public class CustomerCommentController{
@Autowired
private CustomerCommentService customerCommentService;
/**
*
* 测试多文件上传
*
* **/
@RequestMapping(value = "/test",method=RequestMethod.POST)
public ResultObject test(@RequestParam("files") MultipartFile[] files){
System.out.println("files:"+files);
ResultObject ro = customerCommentService.test(files);
return ro;
}
}
2.文件上传用到的jar包
图1:jar包
图2:具体对应位置
3.pom.xml文件对应部分
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-dao</artifactId>
<version>2.0.8</version>
</dependency>
4.service层代码
import org.springframework.web.multipart.MultipartFile;
......
public interface CustomerCommentService {
/**
*
* test多文件上传
*
***/
public ResultObject test(MultipartFile[] files);
}
5.实现层代码
import org.springframework.web.multipart.MultipartFile;
......
@Service
public class CustomerCommentServiceImpl implements CustomerCommentService{
/**
*
* test测试多文件上传
*
* **/
public ResultObject test(MultipartFile[] files){
ResultObject ro = new ResultObject();
StringBuffer path = new StringBuffer();
path = path.append(configReader.getDriverLetter()).append(configReader.getLocalPath()).append(1000000000).append("/").append(1000000001).append("/");
System.out.println("文件存放路径"+path);
//如果目录不存在,则新建
File dir = new File(path.toString());
if(!dir.exists()){
dir.mkdirs();
}
String tmpPath = path.toString();
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
//图片命名
String tmp = Utils.getSysTimeSSS();
tmpPath = tmpPath+tmp+".png";
System.out.println("文件路径:"+tmpPath);
//上传图片
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(tmpPath)));
stream.write(bytes);
stream.close();
tmpPath=path.toString();
} catch (IOException e) {
e.printStackTrace();
//评论图片上传失败
return null;
}
}
return ro;
}
}
6.测试代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<title> This is my HTML </title>
</head>
<body>
<h3> 上传多文件实例 </h3>
<form action="http://192.168.2.67:8080/pets/test" method="post" enctype="multipart/form-data">
选择文件1:<input type="file" name="files"><br>
选择文件2:<input type="file" name="files"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
7.浏览器打开如上xx.html文件
8.点击"提交"按钮
打断点在实现层,主要查看文件路径,,截图如下
9.文件路径及名称
很明显的发现,我们上传了两张图片,路径如下
E:/Resource/pets/User/1000000000/1000000001/
命名如下,我都是用时间命名
10.去物理路径查看文件
自此,上传多文件示例结束。