【问题标题】:Generating in memory zip file at server and sending to client as download Node.JS在服务器上生成内存 zip 文件并作为下载 Node.JS 发送到客户端
【发布时间】:2015-02-15 14:42:26
【问题描述】:

我正在尝试在服务器的内存中生成一个 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)
    })

如何进行?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 但是这个需要一个静态 zip 文件。我正在运行时生成 zip 文件,我想将其发送到客户端,而不必将其保存在服务器的磁盘中。
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2020-01-25
    相关资源
    最近更新 更多