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