代码之家  ›  专栏  ›  技术社区  ›  Jonathan002

如何使用管理sdk通过路径将文件上载到firebase的云存储?

  •  0
  • Jonathan002  · 技术社区  · 6 年前

    firebase文档中没有太多解释如何在使用firebase管理sdk进行google云存储时上传带有路径的文件。

    我已经看过了 firebase's documentation 它指定我可以创建一个bucket,并且我应该引用 google clouds documentation 寻求进一步帮助。

    然后,他们还展示了如何创建另一个存储桶以及指向 API Reference Documentation ,这再次向您展示了如何创建另一个存储桶,但至少这次有一个代码示例表可供参考。这个 files 表中的链接显示了一个回购示例,其中

    // Uploads a local file to the bucket
      storage
        .bucket(bucketName)
        .upload(filename)
        .then(() => {
          console.log(`${filename} uploaded to ${bucketName}.`);
        })
        .catch(err => {
          console.error('ERROR:', err);
        });
    

    这是有帮助的,因为我可以上传一个文件与管理员使用它。

    var admin = require("firebase-admin");
    var serviceAccount = require("path/to/serviceAccountKey.json");
    admin.initializeApp({
        credential: admin.credential.cert(serviceAccount),
        storageBucket: "<BUCKET_NAME>.appspot.com"
    });
    const bucket = admin.storage().bucket();
    bucket.upload('local/file/path').then(data => {
        console.log('upload success');
    }).catch(err => {
        console.log('error uploading to storage', err);
    });
    

    虽然我仍然不知道如何指定路径,因为这只是把它放在我的firebase存储桶的顶层。有人知道我如何指定一个路径来用api将文件嵌套得更深吗?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Doug Stevenson    6 年前

    请参考 API documentation for the upload() method 是的。您可以看到upload使用第二个名为“options”的参数来描述上载。options对象可能有一个名为 destination 以描述文件应上载到的位置。

    (字符串或文件)

    保存文件的位置。如果给定一个字符串,文件将 使用字符串作为文件名上载到存储桶。当给予 文件对象,您的本地文件将上载到文件对象的 在文件对象的名称下。最后,当这个论点是 省略,文件将使用 本地文件或url相对于其域的路径。

    所以,你可以这样使用它:

    bucket.upload('local/file/path', { destination: 'location/in/bucket' })