因此,为了解决画布toDataUrl
安全问题,我将在服务器上请求一个图像并将其写入我的服务器,以便为客户端提供我托管的图像版本。
我正在请求具有适当权利的图片。
var imageId = shortid.generate();
fs.writeFile('./externalImages/'+imageId+'.jpg', 'http://upload.wikimedia.org/wikipedia/commons/5/58/LeBron_James_3409937543.jpg', function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
图像保存但通常已损坏。
我假设我需要在完成之前创建一个流或缓冲数据,因为我认为它在所有数据写入之前完成。
我的问题是如何创建一个流或缓冲区,以便写入整个文件然后调用完成?
答案 0 :(得分:3)
fs.writeFile
的第二个参数是字符串或缓冲区,因此您实际上正在编写字符串'http://url'
,这会导致图像被破坏。相反,您希望将对该URL的请求的响应传递给该文件,例如
http.get(url, function (res) {
res.pipe(fs.createWriteStream('./externalImages/'+imageId+'.jpg'));
});