44

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

// 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()一意のストレージ参照を作成するためのデータベースに機能のようなものはありますか?

4

3 に答える 3

82

こちらの Firebase Storage プロダクト マネージャー:

TL;DR: UUID ジェネレーターを使用します (Android ( UUID ) および iOS ( NSUUID ) には組み込まれています。JS では、次のようなものを使用できます: Create GUID / UUID in JavaScript? )。必要に応じてファイル拡張子を追加します。それを保存するには(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

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

于 2016-05-25T18:18:39.463 に答える