嗨,我在添加文件到存档时遇到了这个问题,如果有人可以帮助我,那的确会对我有帮助。基本上,我需要添加到存档的所有文件都在一个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中。
使用第二个参数localname:
$zip->addFile("C:/e_files/Images/$image_name", $image_name);
localname(
如果提供),这是ZIP归档文件中的本地名称,它将覆盖文件名。
资料来源:http : //php.net/manual/en/ziparchive.addfile.php
文件名似乎是错误地从路径派生的,并且始终是相同的值,因此会不断覆盖先前添加的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句