PHP压缩功能问题
问题描述:
喂我usign下面的代码来压缩在上传包:PHP压缩功能问题
$nameFile = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$download_folder = './CopyrightFiles/';
$zip = new ZipArchive();
$fileconpress = $download_folder.$nameFile.".zip";
$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
if ($conpress === true)
{
$zip->addFile($tmpName);
$zip->close();
echo $fileconpress."<br/>";
echo "yess !! Success!!!! ";
}
else echo " Oh No! Error";
看来工作正常。
但是有两个问题。
第一个问题是保存文件也与原来的扩展,是这样的:image.JPG.zip
而且当我再zip包移动到我的本地计算机(Mac),然后我打开ZIP里面我只能找到一个tmp文件夹里面的二进制文件,而不是应该在那里的图像或文件!
这到底是怎么回事?
请告知
谢谢
答
那是因为你的“二进制”文件仅仅是PHP用于临时存储上载的文件作为临时的名称。这就是为什么它是$ _FILES数组中的“tmp_name”。
试试这个:
$zip->addFile($tmpName, $nameFile);
第二个参数,可以指定该文件的名称应该是拉链内的东西。
为了防止 'file.jpg.zip',请尝试:
$fileconpress = $download_folder . pathinfo($_FILES['file']['name'], PATHINFO_FILENAME) . ".zip";
答
问题#1:
您需要手动删除扩展:
$filename = explode('.', $_FILES['file']['name']);
$filename = $filename[0];
问题#2:
$ tmpName不包含文件的文件名。您需要在addFile()中传递$ localname参数。请参阅http://php.net/manual/en/function.ziparchive-addfile.php。
+0
谢谢!有没有办法给ZIP包一个自定义名称?我真的需要这个选项! – 2011-06-09 22:08:43
谢谢!有没有办法给ZIP包一个自定义名称?我真的需要这个选项! – 2011-06-09 22:08:37
自定义名称?它保存的文件名是,你的意思是?这是您在' - > open()'调用中指定的$ conpress。 – 2011-06-10 01:27:29