【问题标题】:Generate Download URL After Successful Upload上传成功后生成下载地址
【发布时间】:2016-10-15 21:57:29
【问题描述】:

我已经通过 JS 通过 Google Cloud Storage 成功将文件上传到 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);    


  });

【问题讨论】:

    标签: javascript firebase google-cloud-storage firebase-storage


    【解决方案1】:

    您可以:

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

    b) 如果您尝试以编程方式从 Firebase 客户端获取下载网址,则会为您即时创建一个。

    【讨论】:

    • 嘿,谢谢!第一个只是创建一个令牌?这不是一个完整的 URL :( 第二个听起来不错,我该怎么做?
    • 第一个应该创建一个“完整的 url”,创建一个令牌是使这成为可能的原因。您看到什么表明它不是下载 url 而只是令牌?
    • 第二个需要你使用firebase storage sdk。请参阅getting started guides 了解更多信息。
    【解决方案2】:

    使用GCloud客户端时,你想使用getSignedUrl()下载文件,如下:

    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
      });
    });
    

    【讨论】:

    • 您好,谢谢迈克!如何将它与 createWriteStream 结合使用,或者它应该是自己的代码?
    • on('finish', function() {/* make the call to get the download URL */}); 内是一个可能的位置,因为此时它已正确上传。
    • 你是明星还是明星!非常感谢 :) 该链接仍然没有显示在 Firebase 的存储中,但它返回了一个有效的谷歌云 URL!
    • 没问题。该链接未显示,因为它实际上创建了一个不同的 URL - 这些链接在一定时间后过期,因此它们略有不同。
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2021-10-25
    • 2011-05-21
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多