代码之家  ›  专栏  ›  技术社区  ›  Sadman Rizwan

验证Firebase云函数中的存储文件数据

  •  0
  • Sadman Rizwan  · 技术社区  · 6 年前

    在Firebase存储中上传文件后,我想从我的web应用程序调用Firebase cloud函数,该函数将验证我发送给它的文件数据,然后将其存储在实时数据库中。

    我使用以下代码调用该函数:

    var fileRef = 'Files/' + user.uid + '/' + fileId + '/' + file.name;
    var storage = firebase.storage().ref(fileRef);
    //Upload the file
    //..................
    // After uploading the file
    storage.getMetadata().then(function(metadata) {
        var date = metadata.timeCreated.toString();
        var storage = firebase.storage().ref('Files/' + user.uid + '/' + fileId + '/' + file.name);
    
        storage.getDownloadURL().then(function(url){
            var saveFileData = functions.httpsCallable('saveFileData');
            saveFileData({
                fileId: fileId,
                fileRef: fileRef,
                fileData: {
                    Uploader: user.uid,
                    Title: title,
                    FileName: file.name,
                    Size: fileSize,
                    DownloadURL: url,
                    UploadDate: date,
                }
            }).then(function(){
                // Do something
            });
        });
    });
    

    我想根据以下条件验证云函数中的FileName、Size、DownloadURL和UploadDate的值:

    • fileRef包含firebase存储中的现有文件。
    • FileName与fileRef表示的文件名匹配。
    • 大小与fileRef表示的文件大小匹配。
    • UploadDate与fileRef表示的文件的创建日期匹配。
    • DownloadURL包含fileRef表示的文件的下载链接。

    通过Firebase云功能实现这一点的合适方法是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Rahul Somasundaram    6 年前

    你可以使用存储触发器,在Firebase云中部署功能,

    在对象中,您将获得上传文件的所有元数据,如下所示 here

    exports.generateMetaForUpload = functions.storage
      .object()
      .onFinalize(object => {
        console.log(object);
           //do whatever you need to verify
      });