帮助创建ZIP文件Windows不会阻止
我制作了一个应用程序,它从hg存储库中获取项目的标记版本,并创建一个可下载的ZIP文件,其中包含标记的修订。
这些文件使用CodeIgniter的ZIP编码库在运行Linux的MediaTemple服务器上创建。 一切工作正常...在Mac上。 但是,当我在Windows计算机上下载文件时,存档将被阻止提取。
ZIP包含.html
, .css
, .gif
, .png
和.js
文件,我很确定.js
文件是安全的罪魁祸首,但我想知道为什么我可以下载Jcrop jQuery插件(或任何其他示例)作为一个ZIP文件,并提取它没有Windows干扰,即使它明显包含.js
文件,但关于我的ZIP文件有一些安全风险。
通常情况下,我只会为我的特殊情况找到一个快速的软件解决方法,但由于计划是销售对这些文件的访问权限,所以快速软件修复或常见问题解答看起来不太方便用户。
任何反馈将不胜感激! 让我知道你是否需要更多信息。
你可以在这里下载一个示例文件。
编辑:
编辑2:
编辑3:
/
被添加到进程中的某个地方而造成的问题。 我上传了一个由我的应用程序生成的新的示例下载文件名修复,您可以在此下载。 请让我知道是否解决了这个问题。 确实,领先的'/'是导致zip不能被提取的原因。 我通过编写一个Python脚本来证明这一点,以创建不带绝对文件路径的zip文件的修改版本:
from zipfile import *
orig = ZipFile('download.zip', 'r')
fixed = ZipFile('fixed.zip', 'w')
for fileinfo in orig.infolist():
fixed.writestr(fileinfo.filename[1:], orig.read(fileinfo.filename))
fixed.close()
(这不会重新压缩这些文件,但它证明它是导致问题的文件名)
如果您使用的是CodeIgniter zip库的函数read_dir
,那么它必须是使用绝对文件路径的罪魁祸首。 尝试使用PHP递归地遍历目录结构,而不是使用add_data
函数。 这使您可以为每个文件使用任意的路径结构,因此您可以编写相对路径。
当文件使用完整的目录路径而不是相对路径进行压缩时会发生这种情况。 你可以在这里找到这个问题的例子:
http://community.sharpdevelop.net/forums/p/1416/4532.aspx#4532
您可能不得不使用另一个zip实用程序或编写自己的。
这可能有助于提及您使用的是哪个版本的Windows以及您正在获取的确切错误。 它是Windows 7,你试图打开受保护的文件夹中的文件偶然,或者你只是试图在桌面上打开它?
我不认为这与zip文件的制作方式有关,但我可能是错的。
链接地址: http://www.djcxy.com/p/57021.html上一篇: Help creating ZIP files Windows won't block
下一篇: I want to email users an encrypted file from a Django Backend Script on Ubuntu