繁体   English   中英

在php中创建和下载zip存档

[英]create and download zip archive in php

我创建了一个zip文件并下载了。 但是我的问题是我只想下载特定文件而不是根文件夹的完整文件。

我的代码是

$zipname = 'documents.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($allDocuments as $document) {
  $filetopath = public_path().$document;
  $filename = explode('/',$document);
  $name = end($filename);
  $zip->addFile($filetopath,$name);
 }
$zip->close();

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

我只想制作一个仅包含命名文件的zip文件,而不包含任何文件夹,并且包含特定文件而不是根文件夹的所有文件。 但是我由此得到了所有文件夹和所有文件。

在$ alldocumnets变量中,我得到的是有限记录,而不是所有记录。 但是在创建zip时会获取所有文件。

我不明白我在哪里弄错了。

有关目录的问题很明确:只排除is_dir()== true的所有内容

<?php
$allDocuments = array("a.py","b.py");

$zipname = 'documents.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach($allDocuments as $document) {
  $filetopath = getcwd().'\\'.$document;
  if(!is_dir($filetopath)) {
    $filename = explode('/',$document);
    $name = end($filename);
    $zip->addFile($filetopath,$name);
  }
 }
$zip->close();

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

不幸的是,第二部分不清楚。 只要您不告诉我们要排除的文件或确切的问题是什么,这都是无法挽回的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM