我用ziparchive来压缩在linux我的文件,并且可以在Windows默认压缩上传不开,我怀疑这是由文件路径中addfile如造成
$zip-addFile(‘/home/userName/public_html/gallery/license.txt’, ‘gallery/license.txt’);
从下面提建议的链接,我coudl删除本地路径(因为这无法通过窗户可以理解),这成为变
$zip-addFile(‘/home/userName/public_html/gallery/license.txt’, ‘license.txt’);
http://www.jacobbates.com/blog/2012/04/24/corrupt-zip-files-in-windows-from-phps-ziparchive/
PHP ZipArchive腐败在Windows
但我需要保持的目录结构,我应该怎么解决这个问题?
也许首先添加与目标目录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
解压test.zip没有空目录补充说:
unzip test.zip
Archive: test.zip
inflating: data/data.php
解压缩testdata.zip添加了一个空的目录:
Archive: testdata.zip
creating: data/
inflating: data/data.php
确实创建:数据/第一
类似于上一个Drupal上下文你的结构有同样的问题。 我通过设置解决了这个Content-disposition
与我的URI的文件名
file_transfer($archive_uri, array(
'Content-Disposition' => 'attachment; filename="' . $archive_uri . '"',
'Content-Length' => filesize($archive_uri))
);