dougao7801 2013-07-17 12:12
浏览 25

使用php下载zip文件夹

I am trying to download zip folder.

Here is my code

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=filename.zip');
header('Content-Length: ' . filesize($zipfilename));

  $files = array('../upload/ES:AIJ_168/M:MSW.doc','../upload/ES:AIJ_168/M:MSW.pdf');



$zipname = 'file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
  $zip->addFile($file);
}
$zip->close();

readfile($zipname);
?>

But When I am running this script.It downloads just one empty upload folder. I don't know why this happens.Please anyone help me out.

  • 写回答

1条回答 默认 最新

  • dongwei4652 2013-07-17 12:32
    关注

    I saw three points in your question

    1) You're sending the content length before the file creation

    2) When you are fetching the file size you are using $zipfilename, but when you open the zip file for adding files you are using $zipname.

    3) You are using colon (:) in the file names. I'm not sure about this use on unix, but you can't name a file with colon on windows.

    I believe that the code will be like this:

    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename=filename.zip');    
    
    $files = array('../upload/ES-AIJ_168/M-MSW.doc','../upload/ES-AIJ_168/M-MSW.pdf');
    
    $zipname = 'file.zip';
    $zip = new ZipArchive;
    $zip->open($zipname, ZipArchive::CREATE);
    foreach ($files as $file) {
        $zip->addFile($file);
    }
    $zip->close();
    header('Content-Length: ' . filesize($zipname));
    readfile($zipname);
    

    PS.: I've used minus signs (-) instead of colons in the file names

    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么