Node.js FS写了一个稍大的图像文件?

时间:2015-05-29 00:44:48

标签: javascript node.js fs

因此,为了解决画布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!');
});

图像保存但通常已损坏。

我假设我需要在完成之前创建一个流或缓冲数据,因为我认为它在所有数据写入之前完成。

我的问题是如何创建一个流或缓冲区,以便写入整个文件然后调用完成?

1 个答案:

答案 0 :(得分:3)

fs.writeFile的第二个参数是字符串或缓冲区,因此您实际上正在编写字符串'http://url',这会导致图像被破坏。相反,您希望将对该URL的请求的响应传递给该文件,例如

http.get(url, function (res) {
  res.pipe(fs.createWriteStream('./externalImages/'+imageId+'.jpg'));
});