request 请求zip链接后保存为.zip,解压不了
发布于 8 年前 作者 zhoushx3 3584 次浏览 来自 问答

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 用我的代码更好,流式处理,你那代码文件大了内存就爆了

回到顶部