【问题标题】:How do I ZIP selected files for user to download?如何压缩选定的文件供用户下载?
【发布时间】:2011-10-28 03:17:01
【问题描述】:

这是我在stackoverflow中的第一篇文章,所以如果有问题请告诉我,以便我修复它,谢谢。

我的网站中有以下代码...

<table id="fruits">
    <tbody>
        <tr class="file" id="tr-file">
            <td class="name" id="id1"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE1</a></td>
            <td class="name" id="id2"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE2</a></td>
            <td class="name" id="id3"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE3</a></td>
            <td class="name" id="id4"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE4</a></td>
        </tr>
    </tbody> 
</table>

我知道我可以在 cpanel 中压缩文件或上传压缩文件并将其作为链接放在页面中... 但 我希望访问者选择他们想要下载的文件,而不是强迫他们下载所有 4 个文件。所以我在谷歌和found a useful post中搜索。 (问题是我只知道HTML的基础,我不明白他写了什么) 我希望访问者从&lt;table id="fruits"&gt; 中选择多个文件。

示例:http://jsfiddle.net/dn3L7/

 <table id="fruits">
        <tbody>
            <tr class="file" id="tr-file">
               <input type"checkbox" id="idc1"> <td class="name" id="id1"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE1</a></td>
               <input type"checkbox" id="idc2"> <td class="name" id="id2"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE2</a></td>
               <input type"checkbox" id="idc3"> <td class="name" id="id3"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE3</a></td>
               <input type"checkbox" id="idc4"> <input type"checkbox" id=""idc1>  <td class="name" id="id4"><a class="thickbox" href="FILE-LINK">NAME-OF-FILE4</a></td>
            </tr>
        </tbody> 
    </table>

当他们检查完文件后,他们将能够单击按钮下载 zip 文件。

【问题讨论】:

  • 这对于堆栈溢出来说可能是一个太大的问题,您基本上是在要求人们为您编写您的应用程序。您必须学习如何制作表单、处理输入、创建 zip 文件然后重定向到它。也许如果你把问题分解成更小的部分。

标签: php javascript html zip zipfile


【解决方案1】:

您可以查看ZipArchive,您可以使用它创建 zip 并让用户下载它。

Cletus 提供了一个非常好的答案there。我在这里谦虚地复制他的样本

$files = array('readme.txt', 'test.html', 'image.gif');
$zip = new ZipArchive;
$zip->open('file.zip', ZipArchive::CREATE);
foreach ($files as $file) {
  $zip->addFile($file);
}
$zip->close();

并进行流式传输:

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

【讨论】:

  • Samuel Liew 你知道如何创建“复选框”吗?我如何在问题中解释,因为我不想强迫用户下载所有文件..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
相关资源
最近更新 更多