bsc*_*fer 3 php linux windows zip encoding
我制作了一个应用程序,它从 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()
Run Code Online (Sandbox Code Playgroud)
(这不会重新压缩文件,但它证明是导致问题的文件名)
如果您使用的是 CodeIgniter zip 库的 function read_dir,那么这一定是使用绝对文件路径的罪魁祸首。尝试使用 PHP 递归遍历目录结构并改用add_data函数。这允许您为每个文件使用任意路径结构,因此您可以编写相对路径。
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |