【问题标题】:Struggle to upload file via REST [duplicate]努力通过 REST 上传文件 [重复]
【发布时间】:2019-08-25 23:16:36
【问题描述】:

如果在 SpringBoot 应用程序中通过 REST 上传文件有些困难。为了测试 REST 接口,我使用 Insomnia 或者有时是 Curl。 在 Insomnia 中,我已配置将呼叫用作 POST。此外,我附加了一个简单的 .txt 文件,其中包含一个名称和一些仅“测试”的内容。作为标题,我使用 Content-Type = multipart/form-data。

当我触发 REST 调用时,我在 REST 客户端中收到以下错误消息:

{
  "timestamp": "2019-04-04T08:51:19.743+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found",
  "path": "/upload/upload_file"
}

我的 RestController 看起来像这样:

@RestController
@RequestMapping("/upload")
public class FileUploadController {

    ...

    @PostMapping("/upload_file")
    public String upload(@RequestParam("file") MultipartFile file) {
        return "test";
    }

发送 REST 调用后,服务器显示以下错误消息:

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:990) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334) ~[commons-fileupload-1.3.jar:1.3]
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115) ~[commons-fileupload-1.3.jar:1.3]
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1175) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1010) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) ~[spring-webmvc-5.1.5.RELEASE.jar:5.1.5.RELEASE]

【问题讨论】:

    标签: java rest spring-boot


    【解决方案1】:

    您收到此异常是因为您没有在应用程序中指定多格式数据的限制。因此,您必须指定限制。

    只需在“application.properties”文件或“application.yml”文件中添加以下行。

    spring.http.multipart.max-file-size=20MB
    

    享受编码..

    【讨论】:

    • 感谢您的帮助,但此解决方案对我不起作用。
    • @Robert 如果它对你不起作用,你为什么接受这个答案?
    • @ASK 抱歉,我想,这样会关闭线程。
    【解决方案2】:

    我使用了不同的方法而不是使用 MultipartFile。现在我使用一个简单的字节数组作为我的 REST 接口的参数。见下文:

    @PostMapping("/
    public String upload3(@RequestBody byte[] catalogFile) {
        return "success";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2016-07-03
      • 2023-03-10
      • 2021-04-11
      • 2017-01-18
      相关资源
      最近更新 更多