【问题标题】:The request was rejected because no multipart boundary was found angular+spring请求被拒绝,因为没有找到多部分边界 angular+spring
【发布时间】:2019-05-17 10:13:45
【问题描述】:

我正在尝试将最近使用 Angular2 下载的文件上传到 Spring API Rest。

问题是(在spring app上显示)...

请求被拒绝,因为没有找到多部分边界

在 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.(FileUploadBase.java:831) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.catalina.connector.Request.parseParts(Request.java:2869) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.catalina.connector.Request.parseParameters(Request.java:3216) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.catalina.connector.Request.getParameter(Request.java:1137) ~[tomcat-embed-core-8.5.28.jar:8.5.28]

在客户端,请求以“multipart/form-data”作为内容类型发送。

我该如何解决?

fileDownloaderService

upload(file) {
const formData = new FormData();
formData.append('file', file);
    const req = new HttpRequest('POST', this.urlUpload, file, {
      headers: new HttpHeaders({'Content-Type':'multipart/form-data'}),
      reportProgress: true
    });
    return this.http.request(req);
  }

app.component

  upload() {
     let file = this.generate_dummy_file(50000000);
     this.downloader.upload(file).subscribe( event => {
        if (event.type === HttpEventType.UploadProgress) {
        } else if (event instanceof HttpResponse) {
          console.log('File is completly uploaded!');
        }
      });


    }

  generate_dummy_file(size) {
    return new Blob([new ArrayBuffer(size)], {type: 'multipart/form-data'});
  };

还有春天的一面

@PostMapping("/uploadFile")
    public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file) {
        return ...;
    }

感谢您的帮助

【问题讨论】:

    标签: java angular spring typescript httprequest


    【解决方案1】:

    试试这个,

     const formData = new FormData();
     formData.append("file", file);
     formData.append("reportProgress", true);
    

    使用httpclient,

     return this.httpclient.post(this.urlUpload, formData);
    

    【讨论】:

      【解决方案2】:

      您实际上是在向您的服务器发送FormData 吗?

      尝试将文件包装在 FormData 对象中,以便 HttpClient 自动添加多部分边界。

      upload(file) {
          const formData = new FormData();
          formData.append('file', file);
          const req = new HttpRequest('POST', this.urlUpload, formData, {
            headers: new HttpHeaders({'Content-Type':'multipart/form-data'}),
            reportProgress: true
          });
          return this.http.request(req);
        }
      
      

      【讨论】:

      • 没什么变化,还是the request was rejected because no multipart boundary was found。我的文件不是来自表格。也许这是原因?我在我的问题中添加了更多信息。
      猜你喜欢
      • 2013-07-02
      • 2019-03-18
      • 1970-01-01
      • 2020-08-27
      • 2020-11-21
      • 1970-01-01
      • 2015-09-14
      • 2013-05-10
      • 2018-01-26
      相关资源
      最近更新 更多