使用Azure Storage Rest API创建文件夹而不创建默认blob文件

时间:2017-02-08 04:21:05

标签: azure azure-storage azure-storage-blobs

我想在Azure上创建以下文件夹结构:

mycontainer
   -images
       --2007
           ---img001.jpg
           ---img002.jpg

现在,一种方法是使用PUT Blob请求并上传指定整个路径的img001.jpg

  

PUT" mycontainer / images / 2007 / img001.jpg"

但是,我想首先创建文件夹images2007,然后在不同的请求中上传blob img001.jpg

现在,当我尝试使用PUT BLOB请求时执行此操作:

  

StringToSign:

PUT











x-ms-blob-type:BlockBlob
x-ms-date:Tue, 07 Feb 2017 23:35:12 GMT
x-ms-version:2016-05-31
/account/mycontainer/images/
  

HTTP网址

sun.net.www.protocol.http.HttpURLConnection:http://account.blob.core.windows.net/mycontainer/images/
  

它正在创建一个文件夹,但它不是空的。通过,默认它创建一个   没有名字的空blob文件。

现在,很多人说我们无法创建一个空文件夹。但是,为什么我们可以使用azure门户网站,因为浏览器必须发送某种类型的休息请求来创建文件夹。

我认为必须对Content-Type进行一些操作,即x-ms-blob-content-type,应指定该内容以告知azure其文件夹不是blob。 但是,我很困惑。

2 个答案:

答案 0 :(得分:1)

这是不可能的 - 文件夹结构只是虚拟的。

Get started with Azure Blob storage using .NET。您只能创建一个容器,该容器中保存的所有内容都是blob。

摘录:

  

如上所示,您可以在其中为路径信息命名blob   名。这可以创建一个虚拟目录结构   像传统的文件系统一样组织和遍历。注意   目录结构只是虚拟的 - 唯一的资源   Blob存储中可用的是容器和blob。

答案 1 :(得分:1)

  

我想首先创建文件夹images和2007然后在不同的请求中上传blob img001.jpg

我同意Brendan Green,目前,Azure blob存储只是让我们通过在其名称中使用路径信息命名blob来创建虚拟目录结构。

  

我认为它必须对Content-Type做一些事情,即x-ms-blob-content-type,应该指定它以告诉azure它的文件夹不是blob。但是,我很困惑。

您可以检查可以为Put Blob操作设置的the description of Request Headers,并且您会发现它不支持通过指定一些请求标头来创建空文件夹。

此外,正如Gaurav Mantri所说,如果你真的想要创建一个没有内容的空文件夹结构,你可以尝试使用Azure File storage,它也可以让我们use REST API to access Azure File storage。并且Create Directory操作云用于在指定的共享或父目录下创建新目录。

  

PUT https://myaccount.file.core.windows.net/myshare/myparentdirectorypath/mydirectory?restype=directory