Firebase存储 - 限制用户上传到Firebase存储的映像大小

Zap*_*ans 11 firebase firebase-storage

我是一名新的firebase开发人员.我正在开发一个Android应用程序,允许用户将图像上传到firebase存储.因为我使用Spark模式,所以我只有5Gb的存储空间.我想限制用户上传到firebase存储的图像的大小.下面是我用于将图像上传到firebase存储的代码.

Uri imageUri = Uri.parse(imagePath);
                    //need permistion android.permission.MANAGE_DOCUMENTS to upload file.
                    final StorageReference photoRef = mStorageRef.child(Constants.FIREBASE_LOCATION_IMAGE_EXAM).child(imageUri.getLastPathSegment());
                    taskStarted();
                    photoRef.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Log.d(TAG, "upload success");
                            mUploadExamTaskCount--;
                            examURLArray.add(new ExamPage(taskSnapshot.getDownloadUrl().toString()));
                            if (mUploadExamTaskCount == 0) {//upload files success.
                                /**
                                 * update image link to database.
                                 */
                                DatabaseReference firebaseExamPage = FirebaseDatabase.getInstance().getReference(Constants.FIREBASE_LOCATION_EXAM_PAGE);
                                firebaseExamPage.child(examKey).setValue(examURLArray);
                                Log.d(TAG, "send upload  exam success br");
                                Intent taskCompletedIntent = new Intent(ACTION_UPLOAD_EXAM_COMPLETED);
                                LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(taskCompletedIntent);
                            }
                            taskCompleted();
                        }
                    })
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

Mik*_*ald 20

根据Firebase存储安全规则文档,您可以编写检查上载文件大小的规则:

service firebase.storage {
  match /b/<bucket>/o {
    match /files/{fileName} {
      allow read;
      allow write: if request.resource.size < 10 * 1024 * 1024; // 10MB limit for instance
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ann 6

使用JS调整客户端的大小

如果您的目标不一定是限制用户,而是为了保持较小的图像,您可以使用JavaScript更好地在客户端调整图像大小.

这对我们来说是完美的解决方案,节省:

  1. 我们托管的空间,
  2. 这个托管空间的钱,
  3. 上传期间访问者的时间(通常少于10倍),
  4. 通过移动限制带宽上传时访问者的钱,
  5. 在尝试上传我们将使用其他解决方案限制的大照片时,访问者遇到的问题和糟糕的体验

如果您有兴趣,可以按照dcollien的其他答案进行调整,我们根据调整大小进行调整:

/sf/answers/2216879451/

正如在该答案中可以看到的那样,使用方法非常简单,要包含的脚本只是一个小的JS/ES6文件.

我相信这个人(dcollien)应该得到更多的功绩,所以我建议你投票给他答案并回答这个问题(所以其他人可以认为它是相关的).

  • 这个联系确实值得一枚奖牌. (2认同)