2013-06-06 185 views
1

如果我上傳文件已存在的相同容器中的azure斑點上的文件,它覆蓋文件,如何避免覆蓋相同?下面我正在提方案.​​.....避免覆蓋斑點AZURE

第一步 - 上傳文件「abc.jpg的」關於所謂的容器蔚藍說「filecontainer」

第二步 - 一旦它被上傳,嘗試上傳一些不同的文件具有相同名稱相同的容器

輸出 - 它將會用最新上傳

我的要求現有的文件 - 我想避免這種覆蓋,因爲不同的人可能有上傳同名我的容器文件。

請幫忙

P.S.

-i不想爲不同的用戶

-i我使用REST API與Jav​​a

回答

1

讓我把這種方式創建不同的容器:

  • 第一步 - user X上傳文件「abc1.jpg」並保存爲io a 本地文件夾XYZ
  • 第二步 - user Y上傳另一個同名文件「abc1.jp G」,現在你再次保存在本地文件夾XYZ

那你現在怎麼辦?

與此我說明你的問題與Azure無關!

保存文件時不要依賴原始文件名。你曾經在哪裏拯救他們。生成隨機名稱(例如GUID)並將原始名稱「附加」爲元數據。

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 

希望有所幫助。

4

Windows Azure Blob存儲支持條件標頭使用它可以防止覆蓋blob。您可以在這裏閱讀有關條件標題的更多信息:http://msdn.microsoft.com/en-us/library/windowsazure/dd179371.aspx

由於您希望blob不應被覆蓋,因此您需要指定If-None-Match條件標頭,並將其值設置爲*。這會導致上傳操作失敗,並出現Precondition Failed (412)錯誤。

其他想法是在上傳之前檢查blob的存在(通過獲取它的屬性),但是我不會推薦這種方法,因爲它可能會導致一些併發問題。

+0

感謝高拉夫的回答,需要一個更多的幫助,請你引導我下面? http://stackoverflow.com/q/16958910/2381006 我收到相同的異常,當我將此參數添加到標頭:( –