我有一个图片网址。
但这些网址很快就会被删除。
所以我应该把它们存储到服务器上。
我选择firebase存储作为图像服务器。
我在appengine上有一个node.js。
实际上,我是node.js的新手,web开发人员(我是android开发人员)。
我找到了图像下载代码。

var fs = require('fs'),
request = require('request');

var download = function(uri, filename, callback){
  request.head(uri, function(err, res, body){
    console.log('content-type:', res.headers['content-type']);
    console.log('content-length:', res.headers['content-length']);

    request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
  });
};

download('https://www.google.com/images/srpr/logo3w.png', 'google.png', function(){
  console.log('done');
});

之后,我可以将此图像上传到firebase存储器中。
但在这种情况下,我认为它也会将图像数据存储到appengine中,对吧?
我不想这样。
我只想把它放在firebase的仓库里。
我可以删除appengine上的文件。
但还有更明确的方法吗?
我想最好的情况是
将图像从url下载到内存中的字节数组中
并上传到firebase存储器。
我该怎么做?

最佳答案

@puf在stackoverflow.com/a/18265122中给出了正确的解决方案(这样您就可以防止将图片下载到app engine,而是使用缓冲区将图片上载到firebase存储),我只添加您可以查看的任何示例,以便在回调主体中将图片上载到firebase存储。

var request = require('request').defaults({ encoding: null });

request.get(yourUrl, function (err, res, buffer) {
    //you can call a function (promise maybe) that will upload your picture to firebase storage
});

10-07 19:24
查看更多