下载zip压缩文件的标题

布鲁诺格曼

我是一个真正的php新手,我有这段代码应允许创建一个ziparchive,其中包含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 /文件夹中,创建的zip具有正确的名称(“ foldername.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("Location: /zip/$zipname");

它应该是 :

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

由于您的$ zipname是变量而不是字符串

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章