我使用ziparchive在linux中压缩我的文件,并且无法在Windows中打开 默认的zip上传器,我怀疑它是由addfile期间的文件路径引起的 例如
$zip-addFile(‘/home/userName/public_html/gallery/license.txt’, ‘gallery/license.txt’);
以下链接中的建议提到我可以删除本地路径(因为这不能被Windows理解),这变成了
$zip-addFile(‘/home/userName/public_html/gallery/license.txt’, ‘license.txt’);
答案 0 :(得分:0)
可能首先使用addEmptyDir
添加目标目录,请参阅下面的代码,创建不同的文件:
<?php
error_reporting(E_ALL);
ini_set('display_errors','on');
$zip = new ZipArchive;
if ($zip->open('tmp/test.zip',ZipArchive::CREATE) === TRUE) {
$zip->addFile('data.php', 'data/data.php');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
$zip = new ZipArchive;
if ($zip->open('tmp/testdata.zip',ZipArchive::CREATE) === TRUE) {
if($zip->addEmptyDir('data')) {
echo 'Created a new root directory';
} else {
echo 'Could not create the directory';
}
$zip->addFile('data.php', 'data/data.php');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
文件的文件大小不同:
-rw-r--r-- 1 www-data www-data 633 Apr 29 12:10 testdata.zip
-rw-r--r-- 1 www-data www-data 545 Apr 29 12:10 test.zip
unzip test.zip没有添加空目录:
unzip test.zip
Archive: test.zip
inflating: data/data.php
使用空目录解压缩testdata.zip:
Archive: testdata.zip
creating: data/
inflating: data/data.php
首先创建:data /
答案 1 :(得分:0)
在Drupal上下文中存在与您的结构类似的问题。我通过使用我的uri
设置Content-disposition
文件名来解决这个问题
file_transfer($archive_uri, array(
'Content-Disposition' => 'attachment; filename="' . $archive_uri . '"',
'Content-Length' => filesize($archive_uri))
);