php - 下载 zip 存档的 header

标签 php download header ziparchive

我是一个真正的 php 新手,我有这段代码应该允许创建一个 ziarchive,其中包含 php 文件所在文件夹中的文件,为存档提供文件夹名称,将其保存在不同的文件夹中 并下载。

$zipname = getcwd();
$zipname = $zipname.'.zip';
$zip = new ZipArchive;
$zip->open('D:/mypath/zip/'.basename($zipname).'', ZipArchive::CREATE);
if ($dir_handle = opendir('./')) {
      while (false !== ($entry = readdir($dir_handle))) {
    if ($entry != "." && $entry != ".." && !strstr($entry,'.php')) {
        $zip->addFile($entry);
    }
  }
  closedir($dir_handle);
}
else {
die('file not found');
}

$zip->close();

到目前为止一切顺利:创建的 zip 具有正确的名称(“foldername.zip”)并且正是我想要的位置,在服务器根目录的/zip/文件夹中。 现在我被这个标题困住了,我无法将下载指向文件的正确位置和名称

header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($zipname).'"');
header('Content-Length: ' . filesize($zipname));
header("Location: /zip/$zipname");
?>

将最后一个标题更改为

header("Location: /zip/foldername.zip");

它可以正常工作,但我正在寻找一种解决方案,它不会在我每次创建新文件夹时都强制我编辑 php。

编辑: 这是工作代码

<?php
$zipname = getcwd();
$zipname = substr($zipname,strrpos($zipname,'\\')+1);
$zipname = $zipname.'.zip';
$zip = new ZipArchive;
$zip->open('D:/inetpub/webs/mydomaincom/zip/'.basename($zipname).'', ZipArchive::CREATE);
if ($dir_handle = opendir('./')) {
      while (false !== ($entry = readdir($dir_handle))) {
    if ($entry != "." && $entry != ".." && !strstr($entry,'.php')) {
        $zip->addFile($entry);
    }
  }
  closedir($dir_handle);
}
else {
die('file not found');
}

$zip->close();

header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($zipname).'"');
header('Content-Length: ' . filesize($zipname));
header('Location: /zip/'.$zipname);
?>

最佳答案

您的最后一个 header 不正确:

header("Location: /zip/$zipname");

应该是:

header("Location: /zip/".$zipname);

因为你的 $zipname 是一个变量而不是一个字符串

关于php - 下载 zip 存档的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435471/

相关文章:

php - PHP 的架构限制是什么?

iOS 下载前获取文件大小

javascript - 下载文件时如何获取浏览器的响应?

PHP转xls文件及UTF-8编码

css - 以站点标题为中心的标志 Wordpress

c++ - _p.h 文件的用途是什么?

php - 获取按月分组的 wordpress 帖子

php - 为什么 stream_context_set_option 的文件路径很奇怪?

java - 如何修复使用 Apache Commons VFS 将文件上传到 SFTP 服务器时发生的错误

php - Imagick::resizeImage 与 Imagick::scaleImage