2017-02-08 38 views
0

我想创建以下在Azure上的文件夹结构:现在创建使用Azure存储REST API的文件夹,而无需创建一个默认的BLOB文件

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

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

PUT “myContainer中/图片/ 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 URL

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

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

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

我认为它必须做些什么Content-Typex-ms-blob-content-type,应该指定它以便告诉天蓝色的文件夹不是blob。 但是,我很困惑。

回答

1

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

请参阅Get started with Azure Blob storage using .NET。您只能创建一个容器,并且该容器中的其他所有内容都是一个blob。

摘录:

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

+0

但是,亚马逊,我能做到这一点。为什么会在Azure中造成问题? –

+1

最后我用S3进行了检查,它也有2级的层次结构:Bucket&Objects。另外,如果你确实需要一个像结构一样的真正的文件夹,你可能也想看看Azure文件服务。在那里你可以创建一个没有任何内容的目录。 –

+0

@GauravMantri你可以用亚马逊的正斜杠给路径创建一个空的文件夹,如“images /” –

1

我想先创建的文件夹的图像和2007年,然后在不同的请求上传的blob img001.jpg

我布伦丹·格林同意,目前,Azure的Blob存储只是使我们通过用名称中的路径信息命名blob来创建虚拟目录结构。

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

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

此外,正如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

相关问题