Node.js,如何将来自URL的图像存储到Firebase存储?

3

我有一些图片的URL。

但是这些URL可能很快就会失效,所以我需要将它们存储到我的服务器上。

我选择使用Firebase Storage作为图片服务器,同时我在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 Storage。
但是在这种情况下,我认为它也会将图像数据存储到AppEngine中,对吗? 我不想要这样。 我只想将其存储到Firebase Storage中。
我可以在AppEngine上删除文件。 但是否有更清晰的方法?
我认为最好的情况(我想要的)是:
  1. 从URL下载图像到内存中的字节数组
  2. 然后将其上传到Firebase Storage。
我该如何做?

既然你知道你想要"从URL下载图像到内存中的字节数组",我认为你正在寻找这个:https://dev59.com/rmMl5IYBdhLWcg3wmoDS#18265122 - Frank van Puffelen
可能是如何在Node.js中从URL加载图像到缓冲区的重复问题。 - Vega
1个回答

1

stackoverflow.com/a/18265122中,@puf提供了适当的解决方案(这样您就可以防止将图片下载到应用程序引擎中,而是使用缓冲区上传图片到Firebase存储),我只会添加任何示例,您可以查看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
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接