我正在尝试使用PHP从一些文件创建一个zip存档。
$zipname = 'path/to/my/dir/' . uniqid('MyZip', true) . '.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$dl_file = file_get_contents($file);
$zip->addFromString(basename($file),$dl_file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
unlink($zipname);
它可以在正确的位置创建一个存档,其名称范围为:MyZip124153.zip
但是,我的浏览器下载的文件名为path-to-my-dirMyZip124153.zip。
我不确定如何阻止它这样做。我宁愿不在这些文件名中嵌入这个文件系统信息。
谢谢!
答案 0 :(得分:1)
显然,它会将路径放在文件名中,因为您在路径中使用路径字符串作为文件名。
改变你的:
header('Content-disposition: attachment; filename=' . $zipname);
类似于:
$new_file_name = 'myzipfile.zip';
header('Content-disposition: attachment; filename=' . $new_file_name);