如何使用admin SDK将文件上传到带有路径的Firebase的云存储中?

Jon*_*002 1 javascript google-cloud-storage firebase firebase-storage

firebase文档上没有太多内容说明如何在使用firebase admin sdk进行Google云存储时使用路径上传文件。

我查看了Firebase的文档,它指定了我可以创建一个值区的功能,应该参考google cloud文档以获得进一步的帮助。

然后,他们还展示了如何创建另一个存储桶以及指向API参考文档的链接,该链接再次向您展示了如何创建另一个存储桶,但是至少这次没有表格可供参考。表格中的文件链接显示了一个回购示例,其中包含

// 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);
    });
Run Code Online (Sandbox Code Playgroud)

这很有用,因为我可以使用admin来上传文件。

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);
});
Run Code Online (Sandbox Code Playgroud)

尽管我仍然对如何指定路径感到困惑,因为这只是将其置于我的Firebase存储桶的顶层。有谁知道我可以如何指定一个路径来更深入地使用api嵌套文件?

Dou*_*son 6

请参考API文档中的upload()方法。您可以看到上载使用另一个名为“选项”的参数来描述上载。options对象可能具有一个称为的属性,destination用于描述文件应上传到的位置。

(字符串或文件)

保存文件的位置。如果提供了字符串,该文件将使用字符串作为文件名上传到存储桶。当给定一个File对象时,您的本地文件将被上传到File对象的存储桶中,并以File对象的名称命名。最后,如果省略此参数,则使用本地文件名或相对于其域的url路径将文件上传到存储桶。

因此,您可以像这样使用它:

bucket.upload('local/file/path', { destination: 'location/in/bucket' })
Run Code Online (Sandbox Code Playgroud)