NodeJS 流式传输远程文件并将其压缩,并存储在本地
NodeJS stream a remote file and zip it, and store it locally
我正在尝试下载一个远程文件,将其压缩并保存到本地节点服务器中。
我正在使用节点 8.11.4
代码 运行 如果我没有压缩它是正确的,但是当我压缩它时,它就停止工作了
所以,下面的代码是有效的
const fs = require('fs')
const https = require('https')
const url = remoteurl // a url that is pointing to a pdf file
https.get(url, (res) => {
res.pipe(fs.createWriteStream("./local-pdf.pdf"))
.on('finish', () => {
console.log('you finished')
})
})
以上代码将正确保存pdf文件。
但是当我尝试将其压缩到流中时,就像这样
const fs = require('fs')
const zlib = require('zlib')
const https = require('https')
const url = remoteurl
https.get(url, (res) => {
res.
pipe(zlib.createGzip())
pipe(fs.createWriteStream("./local-zip.zip"))
.on('finish', () => {
console.log('you finished')
})
})
它生成一个 zip 文件,但是当我打开它时,它告诉我它不是一个有效的 zip 文件。虽然如果我在本地使用 zlib 压缩文件,它工作正常
我需要在管道上做些什么吗?
很难理解什么对您不起作用。您的代码有一些拼写错误,所以它首先不应该 运行,但如果您修复这些拼写错误,它对我来说就很好用了。
您使用哪个程序尝试打开 .zip
?
(顺便说一下:也许考虑让文件以 .gz
结尾,因为这是 gzip 压缩数据的正确文件结尾)
我正在尝试下载一个远程文件,将其压缩并保存到本地节点服务器中。 我正在使用节点 8.11.4
代码 运行 如果我没有压缩它是正确的,但是当我压缩它时,它就停止工作了
所以,下面的代码是有效的
const fs = require('fs')
const https = require('https')
const url = remoteurl // a url that is pointing to a pdf file
https.get(url, (res) => {
res.pipe(fs.createWriteStream("./local-pdf.pdf"))
.on('finish', () => {
console.log('you finished')
})
})
以上代码将正确保存pdf文件。
但是当我尝试将其压缩到流中时,就像这样
const fs = require('fs')
const zlib = require('zlib')
const https = require('https')
const url = remoteurl
https.get(url, (res) => {
res.
pipe(zlib.createGzip())
pipe(fs.createWriteStream("./local-zip.zip"))
.on('finish', () => {
console.log('you finished')
})
})
它生成一个 zip 文件,但是当我打开它时,它告诉我它不是一个有效的 zip 文件。虽然如果我在本地使用 zlib 压缩文件,它工作正常
我需要在管道上做些什么吗?
很难理解什么对您不起作用。您的代码有一些拼写错误,所以它首先不应该 运行,但如果您修复这些拼写错误,它对我来说就很好用了。
您使用哪个程序尝试打开 .zip
?
(顺便说一下:也许考虑让文件以 .gz
结尾,因为这是 gzip 压缩数据的正确文件结尾)