如何将多个远程图像流式传输到一个zip文件中,并使用ExpressJS将其传输到浏览器中?

像素奴隶

我有一个内置于ExpressJs中的小型Web应用程序,该应用程序允许我们公司中的人员浏览产品信息。最近的功能请求要求用户能够下载一批图像(一次可能下载数百个)。这些存储在另一台服务器上。

理想情况下,我认为我需要将这批文件流式传输为zip文件,并将其作为下载流式传输至最终用户的浏览器。最好都不必将文件存储在服务器上。我的想法是我想尽可能减少服务器上的负载。

是否可以这样做,还是我需要考虑另一种方法?我一直在尝试使用“请求”模块进行初始下载。

如果有人可以向我指出正确的方向或推荐任何可能有帮助的NPM模块,将不胜感激。

谢谢。

罗伯特克莱普

一个有用的模块是archiver,但是我敢肯定还有其他模块

这是一个示例程序,显示:

  • 如何检索URL的列表(我正在async用来处理请求,并将并发HTTP请求的数量限制为3个);
  • 如何将这些URL的响应添加到ZIP文件中;
  • 将最终的ZIP文件流式传输到某个位置(在这种情况下为stdout,但对于Express,则可以通过管道传输到响应对象)。

例子:

var async    = require('async');
var request  = require('request');
var archiver = require('archiver');

function zipURLs(urls, outStream) {
  var zipArchive = archiver.create('zip');

  async.eachLimit(urls, 3, function(url, done) {
    var stream = request.get(url);

    stream.on('error', function(err) {
      return done(err);
    }).on('end', function() {
      return done();
    });

    // Use the last part of the URL as a filename within the ZIP archive.
    zipArchive.append(stream, { name : url.replace(/^.*\//, '') });
  }, function(err) {
    if (err) throw err;
    zipArchive.finalize().pipe(outStream);
  });
}

zipURLs([
  'http://example.com/image1.jpg',
  'http://example.com/image2.jpg',
  ...
], process.stdout);

请注意,尽管这并不要求将图像文件存储在本地,但它确实会在内存中完全构建ZIP文件。也许还有其他ZIP模块可以使您解决此问题,尽管(AFAIK)ZIP文件格式在流方面并不是很出色,因为它取决于将元数据附加到文件末尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何透明地将文件流式传输到浏览器?

来自分类Dev

如何在ASP.net MVC 4中将文本流式传输到浏览器?

来自分类Dev

在Spray中将CSV文件流式传输到浏览器

来自分类Dev

C ++ / OpenCV将套接字中的摄像机视频/图像(MJPEG)流式传输到浏览器(Windows 8.1)

来自分类Dev

如何将文件从磁盘流式传输到.Net MVC中的客户端浏览器

来自分类Dev

c#如何在不写入本地目录的情况下即时生成pdf文件并将其流式传输到浏览器

来自分类Dev

将openCV C ++视频流式传输到浏览器

来自分类Dev

如何使用Django将图像流式传输到浏览器

来自分类Dev

PHP-将CSV文件流式传输到浏览器

来自分类Dev

如何将Map <String,List <Object >>流式传输到Stream <Entry <String,Object >>中?

来自分类Dev

如何在Elixir中流式传输到文件中?

来自分类Dev

将多个数据集传输到Apache Flink中的下一个迭代

来自分类Dev

将多个cloudwatch日志组流式传输到一个lambda时,如何增加策略限制?

来自分类Dev

使用FastAPI将视频流式传输到Web浏览器

来自分类Dev

如何将数据流式传输到希望从作为参数给出的文件中读取数据的程序?

来自分类Dev

如何在ASP.net MVC 4中将文本流式传输到浏览器?

来自分类Dev

如何将本地文件流式传输到Chromecast?

来自分类Dev

Bash编程-如何将变量的内容传输到另一个bash文件

来自分类Dev

在Spray中将CSV文件流式传输到浏览器

来自分类Dev

如何将文件流式传输到硬盘驱动器?

来自分类Dev

如何将几个大文件流式传输到码头

来自分类Dev

如何将STDIO流式传输到Elixir中的变量?

来自分类Dev

如何将文件从远程ubuntu服务器传输到远程ubuntu服务器?

来自分类Dev

如何使用浏览器中的Flash客户端将网络摄像头流式传输到RTMP服务器?

来自分类Dev

使用getUserMedia将数据从浏览器流式传输到Node.js服务器

来自分类Dev

将文件从远程 url 流式传输到 Django 视图响应

来自分类Dev

如何使用 for each 循环将信息传输到另一个工作表中

来自分类Dev

如何将数据从多个 excel/csv 文件传输到 C# 中的字典

来自分类Dev

如何将信息从 GUI pyQt5 传输到另一个文件

Related 相关文章

  1. 1

    如何透明地将文件流式传输到浏览器?

  2. 2

    如何在ASP.net MVC 4中将文本流式传输到浏览器?

  3. 3

    在Spray中将CSV文件流式传输到浏览器

  4. 4

    C ++ / OpenCV将套接字中的摄像机视频/图像(MJPEG)流式传输到浏览器(Windows 8.1)

  5. 5

    如何将文件从磁盘流式传输到.Net MVC中的客户端浏览器

  6. 6

    c#如何在不写入本地目录的情况下即时生成pdf文件并将其流式传输到浏览器

  7. 7

    将openCV C ++视频流式传输到浏览器

  8. 8

    如何使用Django将图像流式传输到浏览器

  9. 9

    PHP-将CSV文件流式传输到浏览器

  10. 10

    如何将Map <String,List <Object >>流式传输到Stream <Entry <String,Object >>中?

  11. 11

    如何在Elixir中流式传输到文件中?

  12. 12

    将多个数据集传输到Apache Flink中的下一个迭代

  13. 13

    将多个cloudwatch日志组流式传输到一个lambda时,如何增加策略限制?

  14. 14

    使用FastAPI将视频流式传输到Web浏览器

  15. 15

    如何将数据流式传输到希望从作为参数给出的文件中读取数据的程序?

  16. 16

    如何在ASP.net MVC 4中将文本流式传输到浏览器?

  17. 17

    如何将本地文件流式传输到Chromecast?

  18. 18

    Bash编程-如何将变量的内容传输到另一个bash文件

  19. 19

    在Spray中将CSV文件流式传输到浏览器

  20. 20

    如何将文件流式传输到硬盘驱动器?

  21. 21

    如何将几个大文件流式传输到码头

  22. 22

    如何将STDIO流式传输到Elixir中的变量?

  23. 23

    如何将文件从远程ubuntu服务器传输到远程ubuntu服务器?

  24. 24

    如何使用浏览器中的Flash客户端将网络摄像头流式传输到RTMP服务器?

  25. 25

    使用getUserMedia将数据从浏览器流式传输到Node.js服务器

  26. 26

    将文件从远程 url 流式传输到 Django 视图响应

  27. 27

    如何使用 for each 循环将信息传输到另一个工作表中

  28. 28

    如何将数据从多个 excel/csv 文件传输到 C# 中的字典

  29. 29

    如何将信息从 GUI pyQt5 传输到另一个文件

热门标签

归档