我正在使用NodeJ(带有Express),并且试图将zip文件流式传输回客户端。zip中包含的文件不在文件系统上,而是动态创建的。我想将文件内容流式传输到zip并将流式传输回客户端。
IE浏览器,我希望客户端收到:
tmp.zip --> 1.txt --> 2.txt --> 3.txt
快速创建1,2,3.txt并将其流式传输到zip文件。这可能吗?
存档器具有一个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文件。访问该页面的用户将看到文件下载提示。