javascript - docx 文件在从后端服务器下载时损坏
问题描述
我收到了来自 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"
有什么问题?提前致谢)
解决方案
我终于发现应该将responseType
参数设置为blob
. 所以:
config = {header : {'Content-Type' : 'multipart/form-data'}, responseType: 'blob'};
推荐阅读
- python-3.x - 可以从 pipenv 安装特定版本的 Tensorflow,但不能从 Pipfile 安装
- android - 在特定时间在 Flutter 应用程序中运行任务
- reactjs - Gatsby 本地插件构建崩溃
- javafx - 有没有一种简单的方法可以找到我创建的窗格的特定 x 和 y 坐标
- mariadb - 将 MariaDB4J 与临时系统版本控制一起使用
- c# - Vector3.MoveTowards 不工作。它不会移动或显示任何错误
- javascript - 样式化的组件不在 React Iframe 中呈现?
- python - 检测用户对短信的响应并使用 Flask/Twilio 进行响应
- javascript - Javascript音乐播放器:正确搜索但如果手动移动搜索栏则会出现问题
- list - 如何在颤动中显示资产文件夹中文件的名称(不带扩展名)