我想创建一个API,它接受两个对象(作为JSON)并允许上传多个文件。
我在下面的试用代码中使用弹簧启动
@RequestMapping(value = "/some-action", method = RequestMethod.POST)
public void post(@RequestPart(value = "jsonString") String jsonAsString,
@RequestPart(value = "file", required = false) MultipartFile[] files,
HttpServletResponse response)
我接受jsonAsString
,因为我无法接受对象。所以,对于临时解决方案,我传递的是json字符串。
现在,您可以在上面的代码中看到file
已将required
设置为false
。但是,当我没有传递任何文件时,我收到服务器错误。
以下是我的请求正文。
--ARCFormBoundaryer1k80a5e1att9
Content-Disposition: form-data; name="text"
"{"key":"value"}"
--ARCFormBoundaryer1k80a5e1att9--
以下是我得到的错误。
org.apache.tomcat.util.http.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at org.apache.tomcat.util.http.fileupload.MultipartStream.readHeaders(MultipartStream.java:487) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:889) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:854) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
at org.apache.catalina.connector.Request.parseParts(Request.java:2730) ~[tomcat-embed-core-8.0.23.jar:8.0.23]
请告诉我如何才能满足我的要求。
答案 0 :(得分:1)
我想我明白你要做什么。我们尝试过类似的东西不幸的是,由于处理文件上传的方式与POST上的普通数据有效负载不同,您可能不得不使用不同的URL。
我们让它在一个浏览器中工作(不记得哪个),但它很好看。这有点像重载URL。
抱歉,但我希望这确实让你失望太多......