我正在玩一个完全基于javascript的zip/unzip实用程序的想法,任何人都可以从浏览器访问.他们可以直接将他们的zip拖到浏览器中,然后让他们下载所有文件.他们还可以通过拖动单个文件来创建新的zip文件.
我知道在服务器端做它会更好,但这个项目只是为了一点乐趣.
如果我利用各种可用方法,将文件拖入浏览器应该很容易.(gmail风格)
编码/解码应该没问题.我见过一些as3 zip库,所以我相信我应该没问题.
我的问题是最后下载文件..
window.location = 'data:jpg/image;base64,/9j/4AAQSkZJR....'
Run Code Online (Sandbox Code Playgroud)
这在firefox中运行良好,但在chrome中不行.
我可以将文件嵌入到chrome中使用的图像<img src="data:jpg/image;ba.." />,但文件不一定是图像.它们可以是任何格式.
任何人都可以想到另一种解决方案或某种解决方法吗?
下载文件时,Chrome 如何确定保存到磁盘的文件名?
每当我从我正在处理的特定网站(作为开发人员)下载文件时,Chrome 都会在文件扩展名的末尾附加一个下划线。(请参阅:Windows 上的 Chrome 在下载的文件中添加尾随下划线?)。我一直在尝试各种内容类型和内容处置标头,Chrome 似乎忽略了 Content-Disposition 标头中指定的文件名。例如,如果我发出下载文件的请求,并且返回的响应包含以下标头(以及其他标头):
Content-Disposition: attachment;filename="example.pdf"
Content-Type: application/pdf
Run Code Online (Sandbox Code Playgroud)
...保存到磁盘的文件名仍然是原始文件名。在此示例中,原始文件名为test.pdf,并且不是将其另存为example.pdf(如 Content-Disposition 中指定的),而是以test.pdf. 这似乎适用于任何类型的文件类型 - 即使是像 .txt 文件这样简单的文件类型。似乎没有任何其他 HTTP 响应标头指定文件名。
Chrome 是否做了一些特殊的事情来确定保存到磁盘的文件的名称?如果是这样,是否可以覆盖此行为?
据我所知,Chrome 会重命名某些它认为存在安全风险的下载文件(例如:将 .lnk 重命名为 .download),但即使在这种情况下,它仍然会忽略我的 Content-Disposition 标头以获取安全文件类型。