获取图像URL Firebase存储(管理员)

Mak*_*ito 6 javascript google-cloud-storage firebase firebase-storage

我必须将图像上传到Firebase存储。我没有使用网络版本的存储(我不应该使用它)。我正在使用Firebase管理员。没问题,我毫无困难地上传文件,并且在变量“ file”中得到了结果。

如果我访问Firebase存储控制台,则该映像在那里。行。

return admin.storage().bucket().upload(filePath, {destination: 'demo/images/restaurantCover.jpg', 
                                                            metadata:{contentType: 'image/jpeg'}
                                                            public: true
                                                           }).then(file =>{
            console.log(`file --> ${JSON.stringify(file, null, 2)}`);
            let url = file["0"].metadata.mediaLink; // image url
            return resolve(res.status(200).send({data:file})); // huge data
        }) ;
Run Code Online (Sandbox Code Playgroud)

现在,我有一些问题。

  1. 为什么有这么多的信息和那么多的对象作为对upload ()方法的回应?回顾巨大的对象,我发现了一个称为mediaLink元数据内部的属性,它是图像的下载URL。但...

  2. 为什么该网址与firebase所示的网址不同?为什么找不到downloadURL财产?

  3. 如何获得firebase的URL?

火力地堡:https ://firebasestorage.googleapis.com/v0/b/myfirebaseapp.appspot.com/o/demo%2Fimages%2Fthumb_restaurant.jpg ? alt = media & token = bee96b71-2094-4492-96aa-87469363dd2e

媒体链接:https : //www.googleapis.com/download/storage/v1/b/myfirebaseapp.appspot.com/o/demo%2Fimages%2Frestaurant.jpg? generation = 1530193601730593 & alt = media

  1. 如果我使用mediaLink网址,使用其他网址是否有问题?(从ios和Web客户端读取,更新)

Ron*_*ton -2

查看Google Cloud Storage:Node.js 客户端文档,他们有一个示例代码的链接,该链接准确地显示了如何执行此操作。另请参阅File 类文档示例(如下)

// Imports the Google Cloud client library
const Storage = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to access, e.g. file.txt';

// Gets the metadata for the file
storage
  .bucket(bucketName)
  .file(filename)
  .getMetadata()
  .then(results => {
    const metadata = results[0];

    console.log(`File: ${metadata.name}`);
    console.log(`Bucket: ${metadata.bucket}`);
    console.log(`Storage class: ${metadata.storageClass}`);
    console.log(`Self link: ${metadata.selfLink}`);
    console.log(`ID: ${metadata.id}`);
    console.log(`Size: ${metadata.size}`);
    console.log(`Updated: ${metadata.updated}`);
    console.log(`Generation: ${metadata.generation}`);
    console.log(`Metageneration: ${metadata.metageneration}`);
    console.log(`Etag: ${metadata.etag}`);
    console.log(`Owner: ${metadata.owner}`);
    console.log(`Component count: ${metadata.component_count}`);
    console.log(`Crc32c: ${metadata.crc32c}`);
    console.log(`md5Hash: ${metadata.md5Hash}`);
    console.log(`Cache-control: ${metadata.cacheControl}`);
    console.log(`Content-type: ${metadata.contentType}`);
    console.log(`Content-disposition: ${metadata.contentDisposition}`);
    console.log(`Content-encoding: ${metadata.contentEncoding}`);
    console.log(`Content-language: ${metadata.contentLanguage}`);
    console.log(`Metadata: ${metadata.metadata}`);
    console.log(`Media link: ${metadata.mediaLink}`);
  })
  .catch(err => {
    console.error('ERROR:', err);
  });
Run Code Online (Sandbox Code Playgroud)