如何使用PHP ZipArchive从下载的文件名中排除文件路径

时间:2016-07-01 14:17:29

标签: php

我正在尝试使用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。

我不确定如何阻止它这样做。我宁愿不在这些文件名中嵌入这个文件系统信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

显然,它会将路径放在文件名中,因为您在路径中使用路径字符串作为文件名。

改变你的:

header('Content-disposition: attachment; filename=' . $zipname);

类似于:

$new_file_name = 'myzipfile.zip';
header('Content-disposition: attachment; filename=' . $new_file_name);