在PHP中使用popen删除zip内部的路径?

时间:2015-10-09 07:10:13

标签: php zip filepath popen

我正在使用以下帖子LAMP: How to create .Zip of large files for the user on the fly, without disk/CPU thrashing

中的脚本
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="file.zip"');

// use popen to execute a unix command pipeline
// and grab the stdout as a php stream
// (you can use proc_open instead if you need to
// control the input of the pipeline too)
//

$fp = popen('zip -r - tmp/01-55-34_561764e6cb06e', 'r');

// pick a bufsize that makes you happy (8192 has been suggested).
$bufsize = 8192;
$buff = '';
while( !feof($fp) ) {
   $buff = fread($fp, $bufsize);
   echo $buff;
}
pclose($fp);

我的文件夹在文件夹中:tmp / 01-55-34_561764e6cb06e

我得到一个有效的zip文件,但问题是我也得到了我的zip文件中包含的路径。

当我打开它时,我的zipfile看起来像这样

tmp/01-55-34_561764e6cb06e/image1.jpg
tmp/01-55-34_561764e6cb06e/image2.jpg
tmp/01-55-34_561764e6cb06e/image3.jpg
tmp/01-55-34_561764e6cb06e/image4.jpg

我只想拥有没有文件夹的图像(tmp /...).

文件结构

/var/www/html/script.php
/var/www/html/tmp/01-55-34_561764e6cb06e/image1.jpg
/var/www/html/tmp/01-55-34_561764e6cb06e/image2.jpg
/var/www/html/tmp/01-55-34_561764e6cb06e/image3.jpg

我不希望我的脚本与图像位于同一文件夹中!

1 个答案:

答案 0 :(得分:0)

实测值

-j

- 垃圾路径 只存储已保存文件的名称(垃圾路径),而不是 存储目录名称。默认情况下,zip将存储完整路径 (相对于当前目录)。