Я пытаюсь загрузить файл xlsx на сервер, но я получаю две разные ошибки, независимо от того, указываю ли я contentType в заголовке запроса http или нет. Если указать «Content-type: multipart / form-data», я получу следующую ошибку:
FileUploadException: запрос был отклонен, так как не было найдено многочастной границы
Затем, если я не укажу тип контента (как предлагается в разных ответах), я получу эту ошибку:
текущий запрос не является составным запросом
Это что я делаю, чтобы загрузить файл. HTML (ввод вызывается кнопкой, вызывающей метод uploadFile()
):
<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 => {
});
}
В службе метод выполняет следующие действия:
this.http.post(
apiUrl,
formData,
options
);
где в опциях есть указанные заголовки:
let applicationHeaders = new HttpHeaders();
applicationHeaders = applicationHeaders.append('Content-type', 'multipart/form-data');
multipart или blank.
В запросе POST в полезной нагрузке запроса у меня есть:
------WebKitFormBoundarytNckytdr7I8wQcuc
Content-Disposition: form-data; name="file"; filename="Template (2).xlsx"
Content-Type: application/octet-stream
------WebKitFormBoundarytNckytdr7I8wQcuc--