如果我在同一个容器中上传了一个azure blob上的文件,它已经覆盖了该文件,如何避免覆盖相同的文件?下面我将提到这样的场景:
将文件"abc.jpg“上传到名为"filecontainer”的容器中
step2 -上传后,尝试将具有相同名称的不同文件上传到相同的容器
输出-它将用最新上传的文件覆盖现有文件
我的要求-我想避免这种覆盖,因为不同的人可能会上传具有相同名称的文件到我的容器。
请帮帮忙
附注:
-i不想为不同的用户创建不同的容器
-i将REST API与Java结合使用
发布于 2013-06-06 19:48:17
Windows Azure Blob存储支持条件标头,您可以使用它来防止覆盖Blob。你可以在这里阅读更多关于条件头的内容:http://msdn.microsoft.com/en-us/library/windowsazure/dd179371.aspx。
由于您不希望blob被覆盖,因此需要指定If-None-Match条件标头并将其值设置为*。这将导致上载操作失败,并出现Precondition Failed (412)错误。
另一个想法是在上传之前检查blob的存在(通过获取它的属性),但是我不推荐这种方法,因为它可能会导致一些并发问题。
发布于 2013-06-06 19:18:59
您无法控制用户上传文件所使用的名称。但是,您可以控制存储这些文件的名称。标准方法是生成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-06 19:15:35
让我这么说吧:
user X上载文件"abc1.jpg",您将其保存到本地文件夹XYZuser X上载另一个同名文件"abc1.jpg“,现在您将其再次保存在本地文件夹abc1.jpg中你现在做什么?
我用这个来说明你的问题与Azure没有任何关系!
只是在保存文件时不要依赖原始文件名。无论你在哪里保存它们。生成随机名称(例如GUID)并将原始名称“附加”为元数据。
https://stackoverflow.com/questions/16958629
复制相似问题