gpt4 book ai didi

node.js - 动态创建 zip 并将其流式传输到客户端

转载 作者:IT老高 更新时间:2023-10-28 21:58:50 26 4
gpt4 key购买 nike

我正在使用 NodeJs(w/express),我正在尝试将一个 zip 文件流式传输回客户端。 zip 中包含的文件并不存在于文件系统中,而是动态创建的。我想将文件内容流式传输到 zip 并将 zip 流式传输回客户端。

I.E.我希望客户收到:

tmp.zip
--> 1.txt
--> 2.txt
--> 3.txt

其中 1,2,3.txt 是动态创建并流式传输到 zip 文件的。这可能吗?

最佳答案

Archiver有一个 append 方法,可让您将文本保存为文件。要将这些数据“流式传输”给用户,您可以简单地通过管道传输到 HTTP 响应对象。

var Http = require('http');
var Archiver = require('archiver');

Http.createServer(function (request, response) {
// Tell the browser that this is a zip file.
response.writeHead(200, {
'Content-Type': 'application/zip',
'Content-disposition': 'attachment; filename=myFile.zip'
});

var zip = Archiver('zip');

// Send the file to the page output.
zip.pipe(response);

// Create zip with some files. Two dynamic, one static. Put #2 in a sub folder.
zip.append('Some text to go in file 1.', { name: '1.txt' })
.append('Some text to go in file 2. I go in a folder!', { name: 'somefolder/2.txt' })
.file('staticFiles/3.txt', { name: '3.txt' })
.finalize();

}).listen(process.env.PORT);

这将创建一个包含两个文本文件的 zip 文件。访问此页面的用户将看到文件下载提示。

关于node.js - 动态创建 zip 并将其流式传输到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com