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


How to exclude file path from downloaded file name using PHP ZipArchive

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

我不知道怎样才能防止它这样做。我不希望在这些文件名中嵌入这些文件系统信息。

谢谢!

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

更改您的:

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

转换成:

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