提问人:Grigory Voevodin 提问时间:5/20/2023 最后编辑:Grigory Voevodin 更新时间:5/22/2023 访问量:321
如何在前端应用程序上使用axios下载响应类型文档?
How to download response type document with axios on front-end application?
问:
我正在尝试从 api(docx、odt)获取文件并将其保存到下载中(这是前端应用程序)。我尝试过邮递员“将响应保存到文件”,它工作正常,文件按我预期保存。我应该在 axios 中做些什么来降低响应?
响应标头:
content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document,
content-disposition: attachment; filename="output_document.odt"
function getAllData() {
let documentJSON = JSON.stringify(form);
axios.post("http://testapi/document",
{
headers: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.openxmlformats-
officedocument.wordprocessingml.document'
},
data: documentJSON
})
.then((response) => {
console.log(response);
const url = window.URL.createObjectURL(new
Blob([response.data], { type:
'application/vnd.openxmlformats-
officedocument.wordprocessingml.document' }));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.odt');
document.body.appendChild(link);
link.click();
})
.catch((error) => console.log(error))
我不明白响应是怎么回事,所以我尝试了不同的事情,例如从它创建 blob(这显然是不正确的)......
答:
0赞
Grigory Voevodin
5/22/2023
#1
所以,我只是使用了 axios post 请求的错误 sintax,它既不适用请求标头和正文,也不应用响应类型:正确的 sintax 是:
axios.post("http://176.32.33.67:8000/api/document/file",
documentJSON,
{
responseType: 'arraybuffer',
headers: {
'Content-Type': 'application/json',
//'Accept': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
}
})
.then((response) => {
console.log(response);
//deal with response
}
评论