【问题标题】:how to create and download zip file without path directory [duplicate]如何在没有路径目录的情况下创建和下载 zip 文件 [重复]
【发布时间】:2014-01-21 23:03:22
【问题描述】:

我的代码创建了一个 ZIP 文件并将其下载到此 ZIP 文件夹中,一些图像存在。

做得很好,但问题是我下载并解压这个文件夹后,所有路径文件夹也变成我的代码是:

$id         = $row['id'];
$doc_name   = $row['doc_name'];
$file_names = explode(',',$doc_name);
$file_path  = $_ROOT_REQUIRE."uploads/document/";
$archive_file_name = "demo.zip";
$zip        = new ZipArchive($archive_file_name);
if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE ) !== TRUE) {
    echo "cannot open <$archive_file_name>\n";
    exit("cannot open <$archive_file_name>\n");
}
foreach ($file_names as $files) {
    if ($files !== '') {
        $zip->addFile("$files", basename($files));
    }
} 
$zip->close();
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($archive_file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($archive_file_name));
header('Cache-Control: private');
ob_clean();
flush();
readfile(basename($archive_file_name));
exit;

【问题讨论】:

  • 感谢亲爱的完成的意愿

标签: php


【解决方案1】:

这些是我所做的更改,现在运行良好。谢谢大家。

  1. $overwrite = true;

  2. if($zip-&gt;open($archive_file_name,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true)

  3. 这个更大的部分:

    foreach ($file_names as $file) {
        $files = $file_path.$file;
        $files = str_replace('\\', '/', $files);          
        if(filetype($files) == 'file') {
            $zip->addFile( $files, pathinfo( $files, PATHINFO_BASENAME ) );
        }
    }  
    

【讨论】:

    【解决方案2】:

    您的代码外观很好。 只需替换您的 Foreach 循环。

    foreach ($files as $file)
    {
        $file = str_replace('\\', '/', $file);          
        if(filetype($file) == 'file') {         
            $zip->addFile( $file, pathinfo( $file, PATHINFO_BASENAME ) );
        }
    }
    

    应该可以 谢谢

    【讨论】:

    • 谢谢你完成了
    【解决方案3】:

    有点不清楚为什么会发生这种情况,看看这一行:

    $zip->addFile("$files", basename($files));
    

    为什么$files 周围有" 引号?我建议将其更改为:

    $zip->addFile($files, basename($files));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-17
      • 2021-06-22
      • 2015-08-03
      • 2020-11-08
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多