Sou*_*aby 48 php directory 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');
Run Code Online (Sandbox Code Playgroud)
Nat*_*man 124
这里的问题是$zip->addFile
传递相同的两个参数.
根据文件:
bool ZipArchive :: addFile(string $ filename [,string $ localname ])
filename
要添加的文件的路径.
ZIP存档中的localname本地名称.
这意味着第一个参数是文件系统中实际文件的路径,第二个参数是文件在归档中的路径和文件名.
当您提供第二个参数时,您需要在将其添加到zip存档时从中删除路径.例如,在基于Unix的系统上,这看起来像:
$new_filename = substr($file,strrpos($file,'/') + 1);
$zip->addFile($file,$new_filename);
Run Code Online (Sandbox Code Playgroud)
小智 42
我认为更好的选择是:
$zip->addFile($file,basename($file));
Run Code Online (Sandbox Code Playgroud)
这只是从路径中提取文件名.
归档时间: |
|
查看次数: |
43476 次 |
最近记录: |