【问题标题】:How to copy multiple files from server to local hard disk in one http request using C++?如何使用 C++ 在一个 http 请求中将多个文件从服务器复制到本地硬盘?
【发布时间】:2009-06-25 07:02:35
【问题描述】:

如何在一个请求中通过 C++ Web 应用程序将一组文件从服务器机器复制到本地硬盘?这是一种从服务器将批量文件下载到本地计算机的方法。我想在 Java 中你可以通过 ZipInputStream 和 GZipInputStream 来做到这一点。

是否有可能完全通过服务器端代码来实现?还是需要在本地机器上运行客户端来执行文件的批量复制?

【问题讨论】:

    标签: c++ file copy


    【解决方案1】:

    假设您有一个接受表单请求的 Java servlet / ISAPI 扩展

    http://server:port/fileserver?f=FILE1&f=FILE2&.....&f=FILEN

    收到这样的请求后,服务器端代码可以使用 zlib 将所有文件打包成一个 zip 文件,并将该 zip 文件作为 HTTP 响应发送,设置 Content-Type、Content-Length、Last-Modified、等等

    进一步说明:如果您在 IIS6 及更高版本上使用 ISAPI,您还可以将此内容添加到 IIS 的内核模式响应缓存中。

    【讨论】:

      【解决方案2】:

      如果用户意识到这一点,并且这些文件对于网站渲染来说不是必需的,您可以将它们推送到存档中并从您的网站获得链接(或执行类似 sourceforge 的操作,只需重定向到存档和浏览器下载它。对于存档,您可以使用zlib。只需将 Content-type 作为 gzip 发送并推送数据(此处来自标准输入)

      int ret;
      
      /* avoid end-of-line conversions */
      SET_BINARY_MODE(stdin);
      SET_BINARY_MODE(stdout);
      
      ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION);
      if (ret != Z_OK)
          zerr(ret);
      return ret;
      

      如果您尝试将整个页面(HTML、CSS、JS、IMG)作为一个整体发送,则所有这些文件都可以插入到 HTML 中,甚至是图像。 (见this)。

      【讨论】:

      • zlib 不会将多个文件单独粘贴在一起 afaik,您需要为此使用 tar 或类似文件
      猜你喜欢
      • 2012-05-22
      • 2012-07-10
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2015-08-24
      • 1970-01-01
      相关资源
      最近更新 更多