gpt4 book ai didi

php创建没有zip内文件路径的zip

转载 作者:IT王子 更新时间:2023-10-29 00:48:45 24 4
gpt4 key购买 nike

我正在尝试使用 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 被传递了相同的两个参数。

根据the documentation :

bool ZipArchive::addFile ( string $filename [, string $localname ] )

filename
The path to the file to add.

localname
local name inside ZIP archive.

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

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

$new_filename = substr($file,strrpos($file,'/') + 1);
$zip->addFile($file,$new_filename);

关于php创建没有zip内文件路径的zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com