Hri*_*dov 5 javascript google-chrome node.js express node-archiver
我读了很多这样的问题,但我真的无法弄清楚......
我使用存档器并表达Node.js 模块。我只想向客户端发送一个 zip 文件。我的代码大致如下:
res.set("Content-Type", "application/zip");
archive = archiver("zip", {store: true});
archive.pipe(res);
Run Code Online (Sandbox Code Playgroud)
当请求时,zip 文件被正确传输,但 Chrome 抱怨:
资源被解释为文档但使用 MIME 类型应用程序/zip 传输
如果我做了一些愚蠢的事情,比如将内容类型设置为text/json,我会得到:
资源被解释为 Document 但使用 MIME 类型 text/json 传输
很明显,我在 Node.js 中设置的内容正在完成它的工作,而其他问题就是问题所在。它说资源是用 MIME 类型 applicatioin/zip 传输的,但被解释为 Document。
我如何使它不被解释为文档?
另外,我尝试了这些设置内容类型的方法:
res.type("application/zip");
res.contentType("application/zip");
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的结果。
另一方面,Mozilla 没有抱怨任何事情。类似问题的一些答案说这个警告可以忽略。我也应该忽略它吗?问题可能是存档直接传送到响应对象吗?尽管(我再说一遍),zip 已成功发送。
设置Content-Disposition也不起作用:
res.set({
"Content-Type": "application/zip",
"Content-Disposition": "attachment; filename='images.zip'"
});
Run Code Online (Sandbox Code Playgroud)
我也使用 an<iframe>来发起请求:
document.getElementById("iframe-downloader").src = requestUrl;
Run Code Online (Sandbox Code Playgroud)
原因是因为我不希望页面重定向。我能做到的唯一方法就是这样。
更改此答案指出的Chrome 设置也不起作用。
这个答案说这是因为<iframe>. 如果我通过简单的<form>with提出请求action="/archive",它仍然不起作用。
我认为这意味着 Chrome 正在尝试将文件显示为网页,这不是您想要的。
添加标题:Content-Disposition: attachment; filename="filename.ext"
| 归档时间: |
|
| 查看次数: |
12154 次 |
| 最近记录: |