配置Spring專案上傳的兩種方式(全解析)
阿新 • • 發佈:2018-12-14
歡迎檢視Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模組化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring的檔案上傳全解析。
首先對於Spring的檔案上傳,我們僅僅需要關注三點
- Spring需要具備解析Multipart能力
- 前端需要檔案轉換為Multipart請求
在Controller中接收Multipart請求
在Spring專案中配置Multipart解析器
- StandardServletMultipartResolver
- CommonsMultipartResolver
在JavaConfig中配置StandardServletMultipartResolver
@Bean public MultipartResolver multipartResolver() throws IOException { return new StandardServletMultipartResolver(); } @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setMultipartConfig(new MultipartConfigElement("D://")); }
在JavaConfig配置CommonsMultipartResolver
@Bean public MultipartResolver multipartResolver() throws IOException { CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/temp")); return commonsMultipartResolver; }
在XML配置CommonsMultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
在前端傳遞multipart請求
<form action="/fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="submit">
</form>
在Controller方法引數中接收multipart請求
- @RequestPart("file") byte[] file
- @RequestPart("file") Part file
- MultipartFile file
@RequestMapping("/fileUpload")
public void FileUpload(@RequestPart("file") byte[] file) {
...
}
@RequestMapping("/fileUpload")
public void FileUpload(@RequestPart("file") Part file) throws IOException {
file.write("D://test.jpg");
}
@RequestMapping("/fileUpload")
public void FileUpload(MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
file.transferTo(new File("D://" + originalFilename));
}
Java開發之上帝之眼系列教程其他文章
勘誤&感謝
本系列文章資料來源很多出自於網際網路和在下本身的見解,受限於個人技術能力水平和其他相關知識的限制,相關見解錯誤或者資料引用錯誤請各位幫助留言校正!引用資料多來自於網際網路,在下在引用前會遵循各位前輩或者博主的引用說明表示感謝,但網際網路資料多是轉發再轉發或存在遺漏請原作者內信聯絡指正。