我正在使用PHP PclZip library生成动态zip存档,并且正在添加到zip存档的文件具有随机名称。
//These are just examples and not part of the actual code
$image = 'random_image_name_ahnfhhsdf.png';
$audio = 'random_audio_name_ahnfhhsdf.mp3';
$pdf = 'random_pdf_name_ahnfhhsdf.mp3';
$archive = new PclZip($zip_folder_path);
$archive->add($image, PCLZIP_OPT_REMOVE_ALL_PATH);
$archive->add($audio, PCLZIP_OPT_REMOVE_ALL_PATH);
$archive->add($pdf, PCLZIP_OPT_REMOVE_ALL_PATH);
当这些文件添加到档案中时,它们会添加相同的名称(random_image_name_ahnfhhsdf.png ...等等)。我想要做的是给他们一个一致的命名约定,例如。 tutorial_image.png,tutorial_audio.mp3和tutorial_document.pdf。有没有办法做到这一点?或者,简单来说,有没有办法在将文件添加到存档之前重命名文件?
请注意,我知道使用php创建档案的替代方法(例如Ziparchive),由于已经使用库创建的代码,我使用的是库。
答案 0 :(得分:0)
我想你可以在归档之前rename()
该文件。
例如:
`$image = 'random_image_name_ahnfhhsdf.png';
rename($image, 'tpzip\newfile.png')`
压缩后你可以删除这些新文件。
我为单个文件找到了另一个解决方案here。这适用于您的问题。但是如果你有大量的文件,这可能会减慢归档过程。试试这段代码。
$archive = new PclZip("archive.zip");
$new_filename = "new_file_name";
$v_content = file_get_contents( "path to your file" );
$list = $archive->create(
array(
array(
PCLZIP_ATT_FILE_NAME => $new_filename,
PCLZIP_ATT_FILE_CONTENT => $v_content
)
)
);
if ($list == 0) {
die("ERROR : '".$archive->errorInfo(true)."'");
}else{
echo "Success";
}