直接上代码
html
1.controller层代码
java
//文件上传用到的文件包 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包web
图1:jar包
spring
图2:具体对应位置
浏览器
3.pom.xml文件对应部分mvc
<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层代码app
import org.springframework.web.multipart.MultipartFile; ...... public interface CustomerCommentService { /** * * test多文件上传 * ***/ public ResultObject test(MultipartFile[] files); }
5.实现层代码post
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文件
ui
8.点击"提交"按钮
打断点在实现层,主要查看文件路径,,截图以下
9.文件路径及名称
很明显的发现,咱们上传了两张图片,路径以下
E:/Resource/pets/User/1000000000/1000000001/
命名以下,我都是用时间命名
10.去物理路径查看文件
自此,上传多文件示例结束。