我想在Azure上创建以下文件夹结构:
mycontainer
-images
--2007
---img001.jpg
---img002.jpg
现在,一种方法是使用PUT Blob请求并上传指定整个路径的img001.jpg
PUT" mycontainer / images / 2007 / img001.jpg"
但是,我想首先创建文件夹images
和2007
,然后在不同的请求中上传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。
但是,我很困惑。
答案 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