PHP Pclzip库:在压缩之前重命名文件

时间:2015-03-16 11:52:58

标签: php

我正在使用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),由于已经使用库创建的代码,我使用的是库。

1 个答案:

答案 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";
}