2

firebase では、ストレージ機能が快適です。しかし、ストレージ機能を使用するには 2 つの質問があります。

  1. ユーザーの無制限のファイルアップロードを防ぐ方法は? 例) /{uid}/{timestamp}/{fileName} パスを記述できれば、ユーザーはストレージが爆発するまでアップロードできます。
  2. レガシー ファイルを追跡して削除する方法 ユーザーが画像ファイルを含むチャット メッセージをアップロードして画像を削除した場合、ファイルはストレージにまだ存在します。これを管理するためのフックはありますか?

ありがとうございました!

4

1 に答える 1

1

良い質問:

Firebase Storage セキュリティ ルールを使用して、アップロードに任意の制約を適用できます。ファイルの名前またはメタデータに一意の識別情報が含まれている限り、それをユーザーに関連付けて、時間ベースのアクセスを強制できます (とりわけ)。簡単な例:

match /files/{userId}/{fileName} {
  // Only allow the authorized user to write to their files
  allow write: if request.auth.uid == userId;

  // Allow reads if the resource was created less than an hour ago
  allow read: if resource.timeCreated < request.time + duration.value(60, "m");
}

あなたはガベージコレクションシステムを求めています:)簡単な答えは、クライアントでデータベースオブジェクトの削除と一緒にファイルの削除を実行するのが最善ですが、クライアントが信頼できないことは誰もが知っていることです。プライベート バックアップからデータベース データを読み取り、どの BLOB が参照されなくなったかを確認し、それらを削除するバッチ ジョブ (たとえば、毎日) を設定することもできます。また、 Google Cloud Functionsを待ち、アクション (ファイルのアップロード時にデータベースに書き込むなど) を実行して、この情報を同期することもできます。最後に、オブジェクトのライフサイクル管理メソッドを使用して、一定期間後にバケット内のオブジェクトをクリーンアップ (削除、アーカイブなど) できます。

于 2016-06-22T14:26:41.117 に答える