代码之家  ›  专栏  ›  技术社区  ›  zakovyrya

如何通过一个HTTP请求下载多个文件?

  •  42
  • zakovyrya  · 技术社区  · 17 年前

    用例:用户点击网页上的链接-boom!文件夹中的文件。
    我试图用 multipart/mixed message ,但它似乎只适用于Firefox

    我的回答是这样的:

    HTTP/1.0 200 OK
    Connection: close
    Date: Wed, 24 Jun 2009 23:41:40 GMT
    Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3
    Client-Date: Wed, 24 Jun 2009 23:41:40 GMT
    Client-Peer: 127.0.0.1:3000
    Client-Response-Num: 1
    MIME-Version: 1.0
    Status: 200
    
    --AMZ90RFX875LKMFasdf09DDFF3 
    Content-type: image/jpeg 
    Content-transfer-encoding: binary 
    Content-disposition: attachment; filename="001.jpg" 
    
    << here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
    Content-type: image/jpeg 
    Content-transfer-encoding: binary 
    Content-disposition: attachment; filename="002.jpg" 
    
    << here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
    --AMZ90RFX875LKMFasdf09DDFF3--
    

    谢谢你

    不,压缩文件不是一个选项

    3 回复  |  直到 14 年前
        1
  •  31
  •   Andrew Moore    17 年前

    压缩是在所有浏览器上都有一致结果的唯一选项。如果这不是一个选项,因为您不知道可以动态生成zip,那么,它们可以。如果因为你对压缩文件有怨恨而不能选择,那么……

    mime/multipart用于电子邮件和/或向HTTP服务器进行后期传输。它从未打算在HTTP事务的客户机端接收和解析。有些浏览器确实实现了它,有些则没有。

    作为另一种选择,您可以让一个javascript脚本打开Windows下载各个文件。或者Java Applet(需要在机器上运行Java运行时,如果是企业应用程序的话),这不应该是一个问题(正如NetAdmin可以在工作站上部署它)那样,它会在用户选择的目录中下载文件。

        2
  •  1
  •   Einstein    17 年前

    记住10年前在Netscape 4天内进行此操作。它使用了和你所做的一样的边界,并且在那个时候根本不与其他浏览器一起工作。

    虽然它没有回答您的问题,但HTTP 1.1支持请求管道,这样至少可以重用相同的TCP连接来下载多个图像。

        3
  •  0
  •   Roy Rico Alexandr Lazarev    17 年前

    您可以使用base64编码将一个(非常小的)图像嵌入到一个HTML文档中,但是从浏览器/服务器的角度来看,技术上仍然只发送一个文档。也许这就是你打算做的?

    Embedd Images into HTML using Base64

    编辑:我刚刚意识到我在谷歌搜索中找到的大多数方法只支持火狐,而不是IE。

    推荐文章