Firebase:使用admin sdk存储图片

时间:2018-02-01 07:06:26

标签: firebase firebase-storage firebase-admin

我正在尝试将图像存储到firebase存储中,我正在使用node.js。

import * as admin from 'firebase-admin';

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'https://xxx-app.firebaseio.com',
    storageBucket: 'xxxx-app.appspot.com'
});


function storeHeadShots(){

    const bucket = admin.storage().bucket();

    bucket.upload('./headshots/Acker.W.png', function(err, file){
        if (!err){
            console.log('file uploaded')
        } else {
            console.log('error uploading image: ', err)
        }
    });

}
storeHeadShots();

现在上面工作正常,但我在存储users/中有一个文件夹,在这个文件夹中我存储图像。 如何访问此文件夹

1 个答案:

答案 0 :(得分:3)

对于试图解决相同问题的任何人。

该示例取自官方文档here,但未说明如何将文件放入文件夹。默认示例将文件放在与本地文件同名的存储桶根目录下。

我不得不更深入地研究Cloud Storage类文档here,发现对于options,存在一个destination参数,用于描述存储桶中的文件。

在以下示例中,本地文件images/bar.png将被上载到默认存储桶的文件/foo/sub/bar.png

const bucket = admin.storage().bucket();

bucket.upload('images/bar.png', {
  destination: 'foo/sub/bar.png',

  gzip: true,
  metadata: {
    cacheControl: 'public, max-age=31536000'
  }
}).then(() => {
  console.log(`${filename} uploaded.`);
}).catch(err => {
  console.error('ERROR:', err);
});

希望这可以为其他人节省一些时间。祝您上传愉快!