Запрос был отклонен, так как не было найдено многочастной границы: угол + пружина - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь загрузить файл, недавно загруженный с Angular2, в Spring API Rest.

Проблема заключается в (отображение в приложении Spring) ...

Запрос былотклонено, поскольку не найдено многокомпонентной границы

в 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] at 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 ...;
    }

Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Попробуйте,

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

используйте httpclient,

 return this.httpclient.post(this.urlUpload, formData);
0 голосов
/ 17 мая 2019

Вы действительно отправляете 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);
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...