php创建zip文件,但不包含zip文件中的文件的路径

我正在尝试使用php创建一个zip文件(确实如此-从此页面获取-http://davidwalsh.name/create-zip-

php),但是zip文件中的所有文件夹名称都是文件本身。

可以将zip文件中的文件减去所有文件夹吗?

这是我的代码:

function create_zip($files = array(), $destination = '', $overwrite = true) {

if(file_exists($destination) && !$overwrite) { return false; };

$valid_files = array();

if(is_array($files)) {

foreach($files as $file) {

if(file_exists($file)) {

$valid_files[] = $file;

};

};

};

if(count($valid_files)) {

$zip = new ZipArchive();

if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {

return false;

};

foreach($valid_files as $file) {

$zip->addFile($file,$file);

};

$zip->close();

return file_exists($destination);

} else {

return false;

};

};

$files_to_zip = array('/media/138/file_01.jpg','/media/138/file_01.jpg','/media/138/file_01.jpg');

$result = create_zip($files_to_zip,'/...full_site_path.../downloads/138/138_files.zip');

回答:

这里的问题$zip->addFile是要传递相同的两个参数。

根据文档:

bool ZipArchive :: (字符串 [,字符串 ])

要添加的 的路径。


ZIP档案中的 本地名称。

这意味着第一个参数是文件系统中实际文件的路径,第二个参数是文件在存档中将具有的路径和文件名。

提供第二个参数时,将其添加到zip归档文件时,您将希望从中删除路径。例如,在基于Unix的系统上,这看起来像:

$new_filename = substr($file,strrpos($file,'/') + 1);

$zip->addFile($file,$new_filename);

以上是 php创建zip文件,但不包含zip文件中的文件的路径 的全部内容, 来源链接: utcz.com/qa/411087.html

回到顶部