我一直在尝试使用POST REST服务方法在我的Java Spring MVC Web应用程序中上传多部分文件。我使用以下REST服务方法上传文件,当我使用Postman REST服务选择文件时,这可以正常工作。
@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload( @RequestParam("file") MultipartFile file, ModelMap model)
{
//codes
}
但是当我试图将multipart文件作为参数传递给控制器中的POST REST服务方法时。它不能正常工作。那么我如何将multipart文件作为queryparam传递给POST REST服务方法。
In my controller class I have:
@RequestMapping(value = "/upload-image", method = RequestMethod.POST)
public String uploadProfileImage(@RequestParam("fileUpload") MultipartFile fileUpload, Model model, HttpServletRequest request, HttpServletResponse response)
{
// codes
}
我的root-context.xml文件中有以下bean
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
感谢任何帮助。
答案 0 :(得分:0)
这很容易也有点奇怪。请使用@PathVariable
代替@RequestParam
。几个月前我面对这种情况。我不知道为什么会这样,但下面的片段在我的项目中起作用。
@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/upload-image", consumes = MULTIPART_FORM_DATA_VALUE, produces = APPLICATION_JSON_VALUE)
public String uploadProfileImage(@PathVariable("fileUpload") MultipartFile file) {
// ...
}
查看JerseyRestClientMultipartUpload.java,了解如何使用MultiPart
发送Jersey
。
final MultiPart multiPart = new FormDataMultiPart()
.field("description", "Picture of Jabba the Hutt", MediaType.TEXT_PLAIN_TYPE)
.field("characterProfile", jsonToSend, MediaType.APPLICATION_JSON_TYPE)
.field("filename", fileToUpload.getName(), MediaType.TEXT_PLAIN_TYPE)
.bodyPart(fileDataBodyPart);
multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE);
// POST request final
final WebResource resource = client.resource(API_URI)
ClientResponse response = resource.type("multipart/form-data").post(ClientResponse.class, multiPart);