在服务器的内存zip文件中生成并作为下载Node.JS发送到客户端

时间:2015-02-15 14:42:27

标签: node.js download zip server in-memory

我正在尝试在服务器上的内存中生成一个zip文件,并将其作为下载文件发送到客户端。

基本上,有一个html页面,客户端键入他想要的文件。 服务器接收客户端输入的内容(通过socket.io)并在mongodb上进行搜索。此时,服务器返回类似这样的链接

    <a href='#' onclick='socket.emit("generateFile", id, path); return false;'>link</a>

其中id是数据库中条目的id,path是zip中的一个文件的位置。 在那之后,该服务器应该创建一个包含具有该id的条目的json,并将其与服务器上可用的一些本地文件一起压缩。我的问题是:如何将此生成的zip发送给客户端?记住:我想发送它而不必将其保存在服务器的硬盘中。在创建zip之后我尝试使用Express但是代码没有到达这个部分:

    app.get('/', function(res, req)
    {
        res.set('Content-Type', 'application/zip')
        res.send(generatedZipFile)
    })

如何进行?

1 个答案:

答案 0 :(得分:0)

这是来自express-static-zip实现

var contentType = mime.lookup(name);
            if (contentType != 'application/octet-stream') {
                res.set('Content-type', contentType);
                var charSet = mime.charsets.lookup(contentType);
                if (charSet) {
                    entryData = entryData.toString(charSet);
                }
            }

            res.status(200).send(entryData);

您可能想要设置状态代码和mime格式。