正确的标题,但铬说:“资源解释为文档”
我读了很多像这样的问题,但我真的无法弄清楚…
我使用存档器和expression Node.js模块。 我想简单地发送一个zip文件到客户端。 我的代码大致如下所示:
res.set("Content-Type", "application/zip"); archive = archiver("zip", {store: true}); archive.pipe(res);
当请求时,zip文件被正确传输,但Chrome抱怨:
资源解释为文档,但使用MIMEtypes的应用程序/ zip传输
如果我把内容types设置为text/json
,我会做一些愚蠢的事情:
资源解释为Document,但是以MIMEtypestext / json传输
所以显然,我在Node.js中设置的是做它的工作,而其他的是这个问题。 它说资源是通过MIMEtypesapplication / zip传输的 ,但是解释为Document。
我如何使它不被解释为文档?
另外,我尝试了这些设置内容types的方法:
res.type("application/zip"); res.contentType("application/zip");
但是我得到了同样的结果。
另一方面,Mozilla不会抱怨任何事情。 类似的问题的一些答案说,这个警告可以被忽略。 我应该忽略它吗? 难道问题是存档是直接pipe道到响应对象? 尽pipe(我重复一遍),邮件发送成功 。
编辑:
设置Content-Disposition
也不起作用:
res.set({ "Content-Type": "application/zip", "Content-Disposition": "attachment; filename='images.zip'" });
我也使用<iframe>
来发起请求:
document.getElementById("iframe-downloader").src = requestUrl;
原因是因为我不想要页面redirect。 我能做到的唯一方法就是这样。
编辑:
改变我的Chrome设置如何这个答案指出不工作。
编辑:
这个答案说这是因为<iframe>
。 如果我通过一个简单的<form>
with action="/archive"
发出请求,它仍然不起作用。
我认为这意味着Chrome浏览器试图将该文件显示为网页,而这不是您想要的。
添加标题: Content-Disposition: attachment; filename="filename.ext"
Content-Disposition: attachment; filename="filename.ext"