2013-06-06 146 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 我收到相同的异常,当我将此参数添加到标头:( –