在我的 vueJs 应用程序中,我有以下 axios POST api 调用,该调用应该返回我希望保存在 .zip 文件夹中的多个文件。但是,当我使用以下 axios 方法时,我无法打开我的 zip,并且出现错误,提示“myfolder.zip 无效”。
如何正确下载response.data?
这是方法。我在原始调用正文中发送了一些所需的信息以及需要上传的文件,以便我可以获得需要下载的其他文件。
upload() {
console.log("uploading")
let formData = new FormData();
let gerarMenus = "on";
let zipName= "test";
let var1= "on";
let var2= "on";
let var3= "on";
let var4= "on";
this.files.forEach((f,x) => {
formData.append('file'+(x+1), f);
});
formData.append('zipName', zipName);
formData.append('var1', var1);
formData.append('var2', var2);
formData.append('var3', var3);
formData.append('var4', var4);
axios
.post("/myUrl/downloadFile", formData)
.then((response) => {
console.log(response.data)
const url = window.URL.createObjectURL(new Blob([response]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', zipName+ '.zip');
document.body.appendChild(link);
link.click()}
).catch(e => {
console.error(e);
});
编辑:我尝试了 tony19 的答案,但仍然遇到相同的错误。
不确定这是否有任何帮助,但我想获得多个 xml 和 sql 文件。
EDIT2: here's a print of response.data in my console.log():
在这一行中:
const url = window.URL.createObjectURL(new Blob([response])); // DON'T DO THIS
^^^^^^^^
...您正在为整个 blob 创建一个对象 URLaxios响应对象 https://github.com/axios/axios#response-schema(包括 HTTP 状态代码、标头等),但您实际上想要的是data
其中的属性如下:
const url = window.URL.createObjectURL(new Blob([response.data]));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)