nodejs实现读取和下载服务端的图片

发布于 2020-01-01  670 次阅读


这里需要用到的库是request-promise

let request = require("request-promise") 导入request库

let data=await request.get({
    uri: `url`,
    method: 'GET',
});
这个时候返回的是一串很长的乱码,起初我以为是返回了binary数据,又是用buffer转base64又是转string hex 但是发现就是跟源文件差了几kb,纠结了好久发现其实是因为request-promise这个库请求的时候在没有设置编码格式的时候会默认给一个编码,导致返回的都是乱码,最后加个属性encoding: null,即 
await request.get({
    uri: `url`,
    method: 'GET',
    encoding: null
});

如果是文件读取则不需要指定编码,读取到文件之后返回的是一个buffer

如果是要写到本地即可
fs.writeFileSync(path, data);

如果是要在前端显示则需要转换成base64,前提是该文件做过加密,需要解密再做base64转换才能正常在前端显示
要转成base64的话,调用tostring方法即可
data.toString('base64')


一个逐渐被时间遗忘掉的人