我正在使用 facebook 身份验证并希望将用户头像从 url 保存到服务器上的文件夹中。用户头像存储在我的变量中${picture}
await mkdir(`${dir}/dist/users/${insertId}`)
if (!facebookLogin) {
fs.createReadStream(`${dir}/dist/images/users.jpg`).pipe(
fs.createWriteStream(`${dir}/dist/users/${insertId}/avatar.jpg`)
)
}
else {
fs.createReadStream(`${picture}`).pipe(
fs.createWriteStream(`${dir}/dist/users/${insertId}/avatar.jpg`)
)
}
不工作的部分在 ELSE LOOP(facebook 登录用户)中,fs.createReadStream('${picture}')
因为它试图从C:\xampp\htdocs\https:\platform-lookaside.fbsbx.com\platform\profilepic\?..........
我希望它直接从 https:\platform-lookaside.fbsbx.com\platform\profilepic\?.............
可能我不应该使用 fs.createReadStream 因为图像现在在 url 中。如何更改此设置以将图像从 url 复制到服务器?
如果使用请求模块怎么办?( https://github.com/request/request )
由于请求的响应也是流,您可以使用 fs 中相同的方法将图像写入服务器。
然后,我想它会起作用:
使用请求库: request(picture).pipe(fs.createWriteStream( ${dir}/dist/users/${insertId}/avatar.jpg
))
使用来自节点的原生 http 模块(https://nodejs.org/api/http.html):
var http = require('http');
var fs = require('fs');
var request = http.get(picture, function(res){
var imageData = '';
res.setEncoding('binary');
res.on('data', function(chunk){
imagedata += chunk;
});
res.on('end', function(){
fs.writeFile(`${dir}/dist/users/${insertId}/avatar.jpg`, imagedata, 'binary', function(err){
if (err) throw err;
//Here the file was saved
})
})
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句