2

I'm trying to upload a xlsx file to server, but I receive two different errors, whether I specify the contentType in the http request header or not. If I specify "Content-type: multipart/form-data" I get the following error:

FileUploadException: the request was rejected because no multipart boundary was found

Then, if I do not specify the content type (as proposed in different answers), I get this error:

current request is not a multipart request

This is what I do to upload the file. HTML (input fired by a button that calls an uploadFile() method):

<input type="file" #fileUpload id="fileUpload" name="fileUpload" accept=".xlsx" style="display:none;" />

.ts:

uploadFile() {
    const fileUpload = this.fileUpload.nativeElement;
    fileUpload.onchange = () => {
      this.file = fileUpload.files[0];
      this.uploadFileToServer();
    };
    fileUpload.click();
  }


  uploadFileToServer() {
    const formData = new FormData();
    formData.append('file', this.file);
    this.importService.uploadFile(formData).subscribe(d => { 

    });
  }

In the service the method does this:

this.http.post(
        apiUrl,
        formData,
        options
      );

where in options there are the specified headers:

let applicationHeaders = new HttpHeaders();
 applicationHeaders = applicationHeaders.append('Content-type', 'multipart/form-data');

multipart or blank.

In the POST request in the request payload I have:

------WebKitFormBoundarytNckytdr7I8wQcuc
Content-Disposition: form-data; name="file"; filename="Template (2).xlsx"
Content-Type: application/octet-stream


------WebKitFormBoundarytNckytdr7I8wQcuc--
Usr
  • 2,628
  • 10
  • 51
  • 91

0 Answers0