node.js - NodeJS 流式传输远程文件并压缩它,并将其存储在本地
问题描述
我正在尝试下载一个远程文件,并将其压缩并保存到本地节点服务器中。我正在使用节点 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 压缩数据的正确文件结尾)
推荐阅读
- javascript - TypeError: Can't read property 'map' of undefined when component uploads a file in React
- javascript - 如何有效地从 webgl 属性缓冲区的中间删除三角形
- python - 为什么我的代码将相同的字典对输出到文本文件中?
- python - yFinance - 获取所有符号
- mysql - 如何将几个单词放入mysql列
- javascript - Javascript开关未触发
- python - 一列python pandas的条件总和
- javascript - 我在 React/Java 中有一个字符编码程序。一切都设置为 UTF-8,但我的一个字符显示不正确
- python - 如何更改我的代码,以使输出中的值仅显示一次,而不是使用随机数多次显示?
- javascript - Node.JS 处理全局事件监听器