Node.js,如何将图像从URL存储到Firebase存储?

时间:2018-10-05 08:58:16

标签: node.js firebase google-app-engine firebase-storage

我有一个图片网址。 但是这些URL可以很快删除。 所以我应该将它们存储到我的服务器中。

我选择Firebase Storage作为映像服务器。 而且我在AppEngine上有一个Node.js。

实际上,我是Web Dev的Node.js的新手。 (我是一名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上删除文件。 但是还有其他更清晰的方法吗?

我认为最好的情况是我想要的

  1. 将图像从URL下载到内存中的字节数组中

  2. 并将其上传到Firebase存储。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

@puf在stackoverflow.com/a/18265122处给出的正确解决方案(因此您可以防止将图片下载到App Engine,而是使用缓冲区将图片上传到Firebase Storage),我只会添加您可以查看Firebase official documentation来将图片上传到回调主体中的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
});