1

ファイルが既に存在する同じコンテナー内の azure blob にファイルをアップロードすると、ファイルが上書きされます。同じものを上書きしないようにするにはどうすればよいですか? 以下にシナリオについて言及しています...

step1 - ファイル「abc.jpg」を azure の「filecontainer」というコンテナーにアップロードします。

step2 - アップロードされたら、同じ名前の別のファイルを同じコンテナにアップロードしてみてください

出力 - 既存のファイルを最新のアップロードで上書きします

私の要件 - 異なる人が同じ名前のファイルをコンテナにアップロードする可能性があるため、この上書きを避けたいです。

助けてください

PS

-i ユーザーごとに異なるコンテナを作成したくない

-JavaでREST APIを使用しています

4

3 に答える 3

4

Windows Azure Blob Storage は、BLOBの上書きを防ぐことができる条件付きヘッダーをサポートしています。条件付きヘッダーの詳細については、http: //msdn.microsoft.com/en-us/library/windowsazure/dd179371.aspxを参照してください。

BLOB を上書きしないようにするため、If-None-Match条件付きヘッダーを指定し、その値を に設定する必要があります*。これにより、アップロード操作がPrecondition Failed (412)エラーで失敗します。

他のアイデアは、アップロードの直前にブロブの存在を確認することです (そのプロパティをフェッチすることによって) が、同時実行の問題が発生する可能性があるため、このアプローチはお勧めしません。

于 2013-06-06T11:48:17.003 に答える
2

ユーザーがファイルをアップロードする際に使用する名前を制御することはできません。ただし、これらのファイルを保存する名前は制御できます。標準的な方法は、Guid を生成し、それに応じて各ファイルに名前を付けることです。衝突の可能性はほぼゼロです。

A simple pseudocode looks like this:

//generate a Guid and rename the file the user uploaded with the generated Guid
//store the name of the file in a dbase or what-have-you with the Guid
//upload the file to the blob storage using the name you generated above

それが役立つことを願っています。

于 2013-06-06T11:18:58.543 に答える
1

そのように言いましょう:

  • ステップ 1 -user Xファイル「abc1.jpg」をアップロードし、ローカル フォルダ XYZに保存します
  • ステップ 2 - user Y「abc1.jpg」という同じ名前の別のファイルをアップロードし、ローカル フォルダー XYZに再度保存します。

これでどうしますか?

これで、あなたの質問が Azure とはまったく関係がないことを示しています。

ファイルを保存するときは、元のファイル名に依存しないでください。どこにいても保存できます。ランダムな名前 (GUID など) を生成し、元の名前をメタデータとして「添付」します。

于 2013-06-06T11:15:34.733 に答える