我正在php中创建一个zip存档,并希望在我的pdfs_lib文件夹中添加一些pdf文件。我已经成功创建了存档但是在创建的zip存档中存在一个问题,文件被添加到pdfs_lib文件夹中,不是我想要的。
我想将pdfs_lib文件夹中的pdf文件直接添加到存档中,而不是将这些文件添加到我创建的zip存档中的pdfs_lib文件夹中。
我所尝试的是:
// Create Zip File
$zip = new ZipArchive;
$res = $zip->open("pdfs_lib/my_zip_archive.zip", ZipArchive::CREATE);
if ($res === TRUE)
{
// Add pdf file to zip archive
$zip->addFile("pdfs_lib/pdf_file_1.pdf");
$zip->addFile("pdfs_lib/pdf_file_2.pdf");
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
此代码成功创建了zip存档,但是当我解压缩存档时,它会创建一个pdfs_lib文件夹并解压缩这个新创建的文件夹中的所有文件。
有关如何创建zip存档而不添加pdf_lib文件夹的任何建议。
答案 0 :(得分:4)
将addFile
来电更改为:
$zip->addFile("pdfs_lib/pdf_file_1.pdf", "pdf_file_1.pdf");
第二个参数是'localname',即zipfile本身使用的名称。如果你在那里省略了文件夹路径,它将被添加到zipfile中的根目录。
答案 1 :(得分:1)
一方不是:如果存档(无论是zip还是其他任何存档格式)解压缩到一个干净的文件夹而不是乱丢整个地方包含的文件,通常认为这是一种好习惯。
但是如果你真的想在没有这样的文件夹的情况下实现它,那么你必须重新编写代码。您有两种选择:
您可以将执行php脚本的工作目录更改为保存文件的文件夹。在这种情况下,您不需要任何路径将文件添加到zip存档,因此不会构建任何文件夹存档内部。
phps zip扩展的addFile()
方法允许指定第二个(可选)参数,该参数允许传递传递文件的目标名称。