我正在尝试读取 ZIP 文件并将其输出到浏览器,获取页面上显示的代码并将其另存为 ZIP 文件
fs.readFileSync('/dir/file.zip','utf-8')
当我这样做时,我得到的输出以PK�coG���^�*filename.txt
并持续一段时间。然而,当我将生成的文本保存为 file.zip 时,我无法提取该文件。它说它已损坏或不是有效的 ZIP 文件。
如果我在 Notepad++ 中打开一个非常相似的文件,则开头和结尾非常相似。我错过了一些明显的东西吗?
任何想法如何获取 ZIP 文件的内容,保存它以便我可以提取它,仅使用fs.readFileSync
功能?
ZIP 是一种二进制文件类型,当您在浏览器中将其作为文本输出并将文本复制粘贴到文本编辑器时,您将不会获得与原始文件中相同的值(网络浏览器可能会解释其某些内容)内容作为 HTML 标签,和/或复制粘贴会破坏一些二进制字符,和/或文本编辑器本身会破坏它们)。
您应该做的是在向浏览器提供文件时设置适当的 HTTP 响应标头,以便浏览器knows它是一个 ZIP,可以向用户显示文件下载提示。如果您不发送任何响应标头,浏览器将仅将内容显示为文本文件,这是没有意义的。
看看这个有 PHP 解决方案的问题:
https://stackoverflow.com/a/10817739/245966
基本上你需要设置适当的Content-Type
and Content-Disposition
标头,以及(可选)Content-Length
.
setResponseHeader('Content-Disposition: attachment; filename=myfile.zip');
setResponseHeader('Content-Type: application/zip');
setResponseHeader('Content-Length: ' + fileLengthInBytes);
Replace setResponseHeader
适当调用您的 HTTP 框架来设置响应标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)