您好我在将文件添加到存档时遇到此问题,如果有人可以帮助我,这对我有帮助。基本上我需要添加到存档的所有文件都在csv文件中。我正在使用fgetcsv读取此文件,然后尝试遍历每个图像并将其添加到存档。
$media_file = "C:/e_files/Exports/Imagery.csv";
$zip = new ZipArchive();
$zip->open('C:/e_files/Exports/Feeds/Media.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
if (($handle = fopen($media_file, "r")) !== FALSE)
{
$row = 1;
while (($data = fgetcsv($handle)) !== FALSE)
{
if($row > 1)
{
$image_name = isset($data[1]) ? $data[1] : null;
if(!empty($image_name))
{
$zip->addFile("C:/e_files/Images/$image_name");
}
}
$row++;
}
}
$zip->close();
$ media_file是包含需要添加到存档的所有图像名称的文件。
C:/ e_files / Images是存储所有图像的路径,我必须从中获取特定图像并添加到存档。
但是当我运行它时,它将整个C:/ e_files /添加到zip。
答案 0 :(得分:0)
使用第二个参数 localname :
*
<强>的localName 强>
如果提供,这是ZIP存档中将覆盖文件名的本地名称。
来源:http://php.net/manual/en/ziparchive.addfile.php
文件名似乎错误地从路径派生而且始终是相同的值,它会一直覆盖以前添加的文件。