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



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

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

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

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

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

如何继续?

这是来自express静态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格式。

最新更新