Node.js FS写了一个有点大的图像文件?
Node.js FS write a somewhat large image file?
因此,为了解决 canvas 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!');
});
图像保存但通常已损坏。
我假设我需要在完成之前创建一个流或缓冲数据,因为我认为它在所有数据写入之前就完成了。
我的问题是如何创建流或缓冲区以便写入整个文件然后调用完成?
fs.writeFile
的第二个参数是字符串或缓冲区,因此您实际上是在写入字符串 'http://url'
,这会导致图像损坏。相反,您想将对 url 的请求的响应通过管道传输到文件,例如
http.get(url, function (res) {
res.pipe(fs.createWriteStream('./externalImages/'+imageId+'.jpg'));
});
因此,为了解决 canvas 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!');
});
图像保存但通常已损坏。
我假设我需要在完成之前创建一个流或缓冲数据,因为我认为它在所有数据写入之前就完成了。
我的问题是如何创建流或缓冲区以便写入整个文件然后调用完成?
fs.writeFile
的第二个参数是字符串或缓冲区,因此您实际上是在写入字符串 'http://url'
,这会导致图像损坏。相反,您想将对 url 的请求的响应通过管道传输到文件,例如
http.get(url, function (res) {
res.pipe(fs.createWriteStream('./externalImages/'+imageId+'.jpg'));
});