файл docx поврежден при загрузке с внутреннего сервера

#javascript #docx #downloadfile

Вопрос:

У меня есть запрос от интерфейса VueJS на мой внутренний сервер:

 let config = {header : {'Content-Type' : 'multipart/form-data'}};
const res = await axios.patch(`http://0.0.0.0:8080/report/${this.docGuid}`, data, config);
 

Заголовки ответов:

 HTTP/1.1 200 OK
date: Tue, 30 Mar 2021 13:05:00 GMT
server: uvicorn
content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
content-disposition: attachment; filename*=utf-8''IL-NS-0_LSM.docx
content-length: 600357
last-modified: Tue, 30 Mar 2021 13:05:01 GMT
etag: c1a4f72bf0ad07234099ac6cec97e635
 

Заголовки запросов:

 PATCH /report/cb07f12a7a49435e8e0f306e71c01969 HTTP/1.1
Host: 0.0.0.0:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------129404071228287858071180535042
Content-Length: 95039
Connection: keep-alive
 

который создает файл MS docx на стороне сервера и в ответ вернул этот созданный файл.
Я пытаюсь загрузить его:

 let blob = new Blob([res.data], {type: res.headers["content-type"]});
window.open(URL.createObjectURL(blob));
 

И это работает, за исключением того, что загруженный файл поврежден, и я не могу его открыть. Кроме того, копия на сервере прекрасна и доступна для открытия.
Тип MIME устанавливается как "application/vnd.openxmlformats-officedocument.wordprocessingml.document"

Что может быть не так? Заранее спасибо)

Ответ №1:

Я, наконец, узнал, что должен быть responseType установлен параметр as blob . So:

 config = {header : {'Content-Type' : 'multipart/form-data'}, responseType: 'blob'};