Javascript 上传成功后生成下载URL

Javascript 上传成功后生成下载URL,javascript,firebase,google-cloud-storage,firebase-storage,Javascript,Firebase,Google Cloud Storage,Firebase Storage,我已经成功地通过JS通过谷歌云存储将文件上传到Firebase的存储中!我注意到,与直接上传的文件不同,通过谷歌云上传的文件只有一个存储位置URL,而不是完整的URL,这意味着它无法读取!我想知道是否有办法在上传时为Firebase实际存储的“下载URL”部分生成完整URL 正在使用的代码: var filename = image.substring(image.lastIndexOf("/") + 1).split("?")[0]; var gcs = gcloud.sto

我已经成功地通过JS通过谷歌云存储将文件上传到Firebase的存储中!我注意到,与直接上传的文件不同,通过谷歌云上传的文件只有一个存储位置URL,而不是完整的URL,这意味着它无法读取!我想知道是否有办法在上传时为Firebase实际存储的“下载URL”部分生成完整URL

正在使用的代码:

    var filename = image.substring(image.lastIndexOf("/") + 1).split("?")[0];
    var gcs = gcloud.storage();
     var bucket = gcs.bucket('bucket-name-here.appspot.com');

     request(image).pipe(bucket.file('photos/' + filename).createWriteStream(
     {metadata: {contentType: 'image/jpeg'}}))
      .on('error', function(err) {})
    .on('finish', function() {



     console.log(imagealt);    


  });
您可以:

a) 通过firebase控制台创建下载url


b) 如果您试图通过编程方式从firebase客户端获取下载URL,则会动态为您创建一个。

使用GCloud客户端时,您希望使用下载文件,如下所示:

bucket.file('photos/' + filename).getSignedUrl({
  action: 'read',
  expires: '03-17-2025'
}, function(err, url) {
  if (err) {
    console.error(err);
    return;
  }

  // The file is now available to read from this URL.
  request(url, function(err, resp) {
    // resp.statusCode = 200
  });
});

嘿,谢谢你!第一个只是创建一个令牌?它不是一个完整的URL:(第二个听起来不错,我该怎么做?第一个应该创建一个“完整的URL”创建一个令牌是实现这一点的原因。您看到什么表明它不是下载url而只是令牌?第二个令牌要求您使用firebase storage sdk。有关更多信息,请参阅。您好,谢谢您,Mike!我如何将其与createWriteStream相结合,或者它本身应该是一个代码?在('finish',function()上的
中{/*拨打电话获取下载URL*/});
是一个很可能的地方,因为它在那时已正确上载。你是明星还是明星!非常感谢:)该链接仍然没有显示在Firebase的存储中,但它返回了一个工作的google云URL!这不是问题。该链接没有显示,因为它实际上创建了一个不同的URL——这些URL在一定时间后过期,所以它们略有不同。