web-dev-qa-db-ja.com

一意/ランダムな名前でファイルを保存する

新しいFirebase APIを使用すると、クライアントコードからクラウドストレージにファイルをアップロードできます。 examples アップロード中にファイル名が既知または静的であると仮定します。

_// Create a root reference
var storageRef = firebase.storage().ref();

// Create a reference to 'mountains.jpg'
var mountainsRef = storageRef.child('mountains.jpg');

// Create a reference to 'images/mountains.jpg'
var mountainImagesRef = storageRef.child('images/mountains.jpg');
_

または

_// File or Blob, assume the file is called rivers.jpg
var file = ...

// Upload the file to the path 'images/rivers.jpg'
// We can use the 'name' property on the File API to get our file name
var uploadTask = storageRef.child('images/' + file.name).put(file);
_

ユーザーが自分のファイルをアップロードすると、名前の競合が問題になります。 Firebaseで自分で定義する代わりにファイル名を作成するにはどうすればよいですか?一意のストレージ参照を作成するためのデータベースにPush()機能のようなものはありますか?

29

Firebase Storage Product Managerはこちら:

TL; DR:UUIDジェネレーター(Android( [〜#〜] uuid [〜#〜] )およびiOS( [〜# 〜] nsuuid [〜#〜] )これらは組み込まれています。JSでは、次のようなものを使用できます。 Create GUID/JavaScriptのUUID? ) 、それを保存したい場合はファイル拡張子を追加します(「。」でfile.nameを分割し、最後のセグメントを取得します)

これには多くのユースケースがあるため、開発者がどのバージョンの一意のファイルを必要とするのかわかりませんでした(以下を参照)。

images/uuid/image.png   // option 1: clean name, under a UUID "folder"
image/uuid.png          // option 2: unique name, same extension
images/uuid             // option 3: no extension

しかし、これはドキュメントで説明するのが合理的だと思われるので、ドキュメント化するために内部的にバグを報告します:)

53
Mike McDonald