私は新しいFirebase開発者です。ユーザーがFirebaseストレージに画像をアップロードできるAndroidアプリを開発しています。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();
}
})
この問題を解決する方法を知っていますか?
Firebase Storage Security Rules docs に従って、アップロードされたファイルのサイズをチェックするルールを作成できます。
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
}
}
}
必ずしもユーザーを制限することではなく、画像を小さいサイズに保つことが目標である場合は、JavaScriptを使用してクライアント側で画像のサイズを変更するの方がよいでしょう。
それは私たちにとって完璧な解決策であり、以下を節約しました。
興味がある場合は、サイズ変更に基づいたdcollienからのこの別の回答に従うことができます。
https://stackoverflow.com/a/31669706/1920145
その答えからわかるように、使用方法は非常に単純であり、含めるスクリプトは1つの小さなJS/ES6ファイルのみです。
この男(dcollien)はもっとメリットがあると思うので、彼の答えとこの答えに投票することをお勧めします(他の人が関連性があると思うように)