直接上代碼
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.去物理路徑查看文件
自此,上傳多文件示例結束。