【问题标题】:PHP Zip and download files from multiple folderPHP Zip和从多个文件夹下载文件
【发布时间】:2013-07-03 03:06:57
【问题描述】:

所以我正在为字体创建一个本地主机网站,并且我设法让用户将多个文件选择到购物车中,如果它们来自同一个文件夹,例如 C:/fonts/a 或 C:,则可以下载它们: /fonts/b 但是如果a和b都有文件,就不能下载了

那么有可能做到吗?比如从 a 和 b 下载选定的文件

下面是我的download.php代码

            <?php
            include 'dbfunctions.php';

            if (!$link) {
                die(mysqli_error($link));
            }
            $sql="SELECT id, Font_Name, Font_Family
                        FROM font";
            $result = mysqli_query($link, $sql) or die(mysqli_error($link));

            while($row = mysqli_fetch_array($result)){

            $Font_Family = $row['Font_Family'];
            $a = file_get_contents('./a.txt');
            $file_dir = file_get_contents('./font_path.ini');

            $path = $file_dir.$Font_Family.$a;

            $error = ""; //error holder
            if(isset($_POST['createpdf']))
            {
            $Font_Family = $_POST['Font_Family'];
            }
            $file_folder = $path;// folder to load files
            if(extension_loaded('zip'))
            {
            // Checking ZIP extension is available
            if(isset($_POST['files']) and count($_POST['files']) > 0)
            {

            // Checking files are selected
            $zip = new ZipArchive(); // Load zip library
            $zip_name = time().".zip"; // Zip name
            if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
            {
             // Opening zip file to load files
            $error .= "* Sorry ZIP creation failed at this time";
            }
            foreach($_POST['files'] as $file)
            {
            $zip->addFile($file_folder.$file,pathinfo($file,PATHINFO_BASENAME)); 
            readfile($path);

            }
            $zip->close();
            if(file_exists($zip_name))
            {
            // push to download the zip
            header('Content-type: application/zip');
            header('Content-Disposition: attachment; filename="'.$zip_name.'"');
            readfile($zip_name);
            // remove zip file is exists in temp path
            unlink($zip_name);
            }

            }
            else
            $error .= "* Please select file to zip ";
            }
            else
            $error .= "* You dont have ZIP extension";
            }

            ?>

fontpath.ini 是 c:\fonts\
a 只是 \ 因为当我写 \ 时 php 给我带来了问题
Font_Family 是 c:\fonts\
中的不同文件夹名称 所以路径就像 C:\fonts(这里的文​​件夹名称)\

【问题讨论】:

  • php给你出了什么问题?
  • 他们只是将其视为 ' 并关闭它。

标签: php download directory zip


【解决方案1】:

无论目录如何,您都可以将每种字体复制到一个临时目录,例如C:/fonts/temp/cartID/。然后,您可以压缩该字体目录(一些来自 /fonts/a,一些来自 /fonts/b)并提供下载。然后您需要进行垃圾收集,即删除临时 cartID 目录。

只有我的 2 美分

【讨论】:

  • 我该怎么做?互联网上有类似的例子吗?我真的找不到那个。因为这也是我的主管的建议
  • 我确定有。我对windows不熟悉,但这是php代码中linux的一个例子:exec("cp /fonts/a/font_name.ttf /fonts/temp/845/font_name.ttf"); exec("cp /fonts/b/font2.ttf /fonts/temp/845/font2.ttf"); ...执行您的 zip 并下载... exec("rm /fonts/temp/845/");
  • 也请查看此页面:php.net/manual/en/function.copy.php 因为有一些 Windows 命令,并且它是一个可以启动的原生 php 函数(我刚刚学到了一些新东西!)。跨度>
  • 取决于。在他们确认他们的“订单”之前,我不会复制文件,所以我会在你的 download.php 脚本中进行复制。可能在购物车内容的while 循环中,您拥有所需文件的位置,因此只需将其复制到临时目录即可。
猜你喜欢
  • 2011-06-27
  • 2019-06-08
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多