如何从Firebase仪表板删除/下载使用firebase-admin SDK上传的文件?

时间:2018-12-27 12:08:35

标签: firebase google-cloud-storage

我已使用admin-sdk上传了用于Firebase的文件,但似乎无法使用Firebase仪表板下载/删除文件。这不一定是问题,因为我不会以这种方式管理文件,但这确实很奇怪。

// Initialization
import * as firebase from 'firebase-admin';
const serviceAccount = require('../firebase_creds');
firebase.initializeApp({
  credential: firebase.credential.cert(serviceAccount),
  databaseURL: 'https://my-databse.firebaseio.com',
  storageBucket: 'gs://my-bucket.appspot.com'
});

export const uploadImages = async () => {
  const bucket = firebase.storage().bucket();
  try {
    const file = await bucket.upload('./images/1-Website.jpg', {
      public: true,
      destination: `12345/displayPicture/1-Website.jpg`
    });
    console.log(file);
  } catch (error) {
    console.log(error);
  }
};

2 个答案:

答案 0 :(得分:0)

通过将predefinedAcl: 'bucketOwnerFullControl'传递到上传选项可以解决此问题。像往常一样,firebase文档非常模糊,在任何地方都没有提及。

答案 1 :(得分:0)

我在Google文档中找到了此问题的原因。

简短摘要:“将预定义的ACL publicRead应用到对象后,您将失去OWNER权限,因此不再可以访问对象ACL”

  

警告:通过将预定义的ACL应用于现有的存储桶或对象,   您将现有的存储桶或对象ACL完全替换为   预定义的ACL。此更改可能会导致您无法访问   在某些情况下,存储桶或对象ACL。例如,如果您在   项目所有者组,但不是对象的所有者   projectPrivate ACL,然后在应用预定义的ACL publicRead之后   该对象,您将失去OWNER权限,因此无法再访问   对象ACL。如果发生这种情况,您可以使用Cloud IAM角色   storage.objectAdmin,以便您具有必要的权限   更新对象的ACL并更正更改。

Predefined ACLs