【问题标题】:PHP: How to download multiple files without using cURL and/or Zip?PHP:如何在不使用 cURL 和/或 Zip 的情况下下载多个文件?
【发布时间】:2012-03-28 08:07:40
【问题描述】:

我想知道是否可以在不使用 cURL 和/或 Zip 的情况下下载多个文件。我想创建一个文件,如果它被访问,它将同时返回 3 个文件。有可能吗?

【问题讨论】:

  • 当您点击指向此类文件的链接时,您会从浏览器中看到什么?
  • 没有。您可以触发几个用于下载文件的弹出窗口。但弹出窗口杀手会阻止这些。

标签: php curl download zip


【解决方案1】:

分发多个文件的一种方法是对它们进行 base64 编码并将它们传递回 JSON 数组,这可用于有效地分发数据,然后在数据到达后决定如何处理。

当然,如果客户端严格来说是 Web 用户,而不是 API 使用者,那么这可能并不理想 - 因为您仍然必须将 base64 转换为可写文件。出于安全原因,Javascript 中的任何内容都无法直接访问文件系统。

或者,您可以向 URI 发出 ajax 请求,该 URI 返回带有“Content-Disposition 附件”的给定文件,然后连同用户输入(请求下一个文件)、请求下一个等,直到所有文件都已下载。

根据您要完成的任务,您也可以提供一个链接列表!有时最简单的解决方案是最好的。

【讨论】:

    【解决方案2】:

    好的老式(即过时)镜框来拯救你!

    <html>
    
      <frameset rows="33%,33%,33%">
    
        <frame src="file1.php" />
        <frame src="file2.php" />
        <frame src="file3.php" />
    
      </frameset>
    
    </html>
    

    【讨论】:

    • 这通常是不安全的功能 - 几乎永远不要再使用框架了。
    • 帧不限于源/域,我可以使用 JS 编写任何帧的 src,在这种情况下,如果我愿意,基本上会导致用户下载恶意软件。如果您使用 ajax 而没有框架(或 iframe),则内容只能来自同一个域。
    • 我在回答中确实指出框架已经过时了。并且我的 HTML 中的框架引用了来自同一站点的内容。没有什么不安全的。
    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2012-02-21
    相关资源
    最近更新 更多