我已經使用Spring(基於java註釋的配置)構建了一個RESTful服務,我可以通過Curl成功執行該服務。我正在嘗試通過HTML表單提交文件,但這不起作用。從表單發佈REST風格的服務
@RequestMapping(path = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestPart(value = "file") MultipartFile file,
RedirectAttributes redirectAttributes) {
logger.info("POST '/upload'");
storageService.store(file);
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded " + file.getOriginalFilename() + "!");
return "redirect:/";
}
而且我通過捲曲提交文件,如下所示:
curl -i -H "Content-Type: multipart/*; boundary=------------BOUNDARY--" -X POST --noproxy localhost, localhost:8080/upload -F "[email protected]"
即使我的表單提交了文件類型的輸入,這個名字的文件,我通過HTML得到這個錯誤形式
org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present
從我一直在調查,它似乎好象控制器會期望一個模型屬性,當文件通過HTML表單提交,所以這可能是解決這一好的做法?爲模型屬性包含一個控制器參數,該參數將被檢查爲空值(以區分HTML表單或其他提交方法),還是HTML表單和RESTful服務之間的某種代理控制器會更好?
嗨!在這個'@RequestParam MultipartFile文件'上嘗試改變這個'@RequestPart(value =「file」)MultipartFile file'' – Optio
對不起!這並沒有解決它,Curl和HTML表單的行爲都是一樣的! 這是抱怨,'文件'不存在於請求我認爲... –