[英]Spring Controller does not receive file through RequestBody or RequestParam
我正在嘗試上傳文件(任何類型),但是我在服務器端(Spring控制器)或客戶端(郵遞員)上做錯了。
控制器(嘗試兩種方法):
@RestController
@RequestMapping("/group")
public class GroupController {
@PostMapping(value = "/test1", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.MULTIPART_FORM_DATA_VALUE)
public String testUpload1(@RequestBody MultipartFile file) {
return null;
}
@RequestMapping(value = "/test2", method = RequestMethod.POST)
public String testUpload2(@RequestParam(name = "file", required = true) MultipartFile multipartFile) {
return null;
}
}
您可以嘗試使用以下代碼。
@PostMapping(value = "/test1", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = MediaType.TEXT_PLAIN_VALUE)
public String testUpload1(@RequestParam("file") MultipartFile uploadedFile) {
System.out.println("Uploaded File Name = " + uploadedFile.getOriginalFilename());
File file = new File("E:/sure-delete/" + uploadedFile.getOriginalFilename());
//Upload functionality
try {
uploadedFile.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.ok("File uploaded successfully ...");
}
這個問題與Spring沒有MultipartResolver bean有關。 您的郵遞員設置看起來不錯。
如果沒有定義bean,則會出現以下錯誤:
[o.s.w.m.s.MissingServletRequestPartException: Required request part 'file' is not present]
您需要做的是用XML定義CommonsMultipartResolver bean:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- e.g.: 1 MB max upload size -->
<property name="maxUploadSize" value="1048576"/>
</bean>
或在Java中執行:
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setMaxUploadSize(1048576);
return resolver;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.