request 请求zip链接后保存为.zip,解压不了
var rp = require(‘request-promise’) var fs = require(‘fs’)
rp(‘http://…a.zip’).then( body => { fs.writeFile(‘a.zip’, body, null, err => { if (err) { console.error(err) } }) }) 如上,request了一个zip链接后把body写入到a.zip文件后,a.zip无法解压。直接下载该链接是可以解压的。 这里是什么问题,encoding?
5 回复
用流的方式,你这么弄不行的
@stonephp 请教下,那该怎么处理,不用流的方式
request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))
这个直接就是 request 文档中的例子,看这个你应该就明白了。
@stonephp 多谢指引,这里在request的时候应该加上 encoding: null. 如request文档说的:
Note: if you expect binary data, you should set encoding: null
所以我这里改成如下就ok了: rp({ url: ‘http://…a.zip’, encoding: null })
@zhoushx3 用我的代码更好,流式处理,你那代码文件大了内存就爆了