【问题标题】:Node https get file from url and unzip节点 https 从 url 获取文件并解压
【发布时间】:2017-07-26 10:10:05
【问题描述】:

我正在使用节点 https/http 模块来下载文件。代码如下所示:

https.get(url)
.on('response', (response) => {
    response.pipe(fs.createWriteStream(dataDir + filename))
}

下一步我使用unzip 模块解压文件。

fs.createReadStream(dataDir + filename)
.pipe(unzip.Extract({path: dataDir}))
.on('close', () => { something }
.on('error', () => { catch error}

在大多数情况下,一切正常。但是,有时 unzip 模块会返回此错误:

Error: invalid signature: 0x6d74683c

我能注意到的唯一问题是文件名。我从 url 获取文件名。它是 url 的最后一个参数。但是,在某些情况下,确切的文件名与 url 中显示的不同。例如:

https://github.com/request/request/archive/master.zip

网址中显示的名称是master.zip,但当我下载它时,名称是request-master.zip

这是真正的问题吗?如果是这样,我该如何解决?

【问题讨论】:

    标签: node.js http request unzip


    【解决方案1】:

    文件名很可能是症状而不是根本原因。 unzip 模块未维护,存在许多未解决的问题。很可能会受到指责,无论如何都不应该使用它。

    改用decompressyauzl。此外,由于您尝试在流中提取存档,因此您可能想了解not truly possible 的情况。

    【讨论】:

    • 感谢您的回复。我先试试yauzl。
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2020-09-18
    • 2020-03-05
    • 2019-04-03
    相关资源
    最近更新 更多