首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >REST API的指针,用于访问或列出blob存储容器中的文件

REST API的指针,用于访问或列出blob存储容器中的文件
EN

Stack Overflow用户
提问于 2019-03-26 17:21:20
回答 2查看 1.1K关注 0票数 2

我是微软azure的新手。我的任务是列出azure blob存储容器中的所有文件。下面是我对这项任务的详细信息

我有以下详细信息:

存储帐户- accdevtesthw

存储帐户类型- blob

容器名称-学生

文件夹-标记和详细信息

存储帐户密钥-

请让我知道如何获得REST URL来列出我容器中Marks文件夹中的所有文件。

我尝试使用下面的URL,但失败了,出现了上述错误

代码语言:javascript
复制
https://accdevtesthw.blob.core.windows.net/Students/Marks?comp=list

错误:

代码语言:javascript
复制
<Error>
        <Code>InvalidQueryParameterValue</Code>
        <Message>
        Value for one of the query parameters specified in the request URI is invalid. RequestId:90a650f3-601e-008e-62b3-e3ab45000000 Time:2019-03-26T09:06:07.8146066Z
        </Message>
        <QueryParameterName>comp</QueryParameterName>
        <QueryParameterValue>list</QueryParameterValue>
        <Reason/>a
        </Error>

我想知道如何使用我得到的详细信息来构建RESTURL

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-14 03:14:46

我也有同样的问题。我通过在Uri中添加'prefix‘参数解决了这个问题。在你的情况下,我认为你需要:

代码语言:javascript
复制
https://accdevtesthw.blob.core.windows.net/Students?comp=list&prefix=Marks

来自:https://docs.microsoft.com/en-us/rest/api/storageservices/list-blobs#uri-parameters

票数 1
EN

Stack Overflow用户

发布于 2019-03-26 20:52:17

请参考此SO帖子中提到的建议

List Blobs操作枚举指定容器下的blobs列表。

代码语言:javascript
复制
Try this code.  Basically, the thing to do is check the type on each of the IListBlobItems returned:

var blobs = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudBlobClient();
var container = blobs.GetContainerReference("testcontainer");
container.CreateIfNotExist();
container.GetBlobReference("directory/blob.txt").UploadText(string.Empty);
container.GetBlobReference("blob.txt").UploadText(string.Empty);

var items = container.ListBlobs();

Console.WriteLine("Directories:");
foreach (var dir in items.OfType<CloudBlobDirectory>())
{
  Console.WriteLine("\t{0}", dir.Uri);
}

Console.WriteLine("Blobs:");
foreach (var blob in items.OfType<CloudBlob>())
{
  Console.WriteLine("\t{0}", blob.Uri);
}

或者您也可以尝试此选项

代码语言:javascript
复制
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("aaa");

            foreach (IListBlobItem blobItem in container.ListBlobs())
            {
                if (blobItem is CloudBlobDirectory)
                {
                    CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
                    IEnumerable<IListBlobItem> blobs = directory.ListBlobs(true);
                    ICloudBlob bi;
                    foreach (var blob in blobs)
                    {
                        if (blob is CloudPageBlob)
                        {
                            bi = blob as CloudPageBlob;
                            Console.WriteLine(bi.Name);
                            Console.WriteLine(bi.Properties.LastModified.ToString());
                            Console.WriteLine();
                            Console.WriteLine(@"==========================");
                        }
                    }
                }
            }

有关详细信息,请参阅此SO链接中提到的建议

请让我们知道以上是否有帮助或您需要进一步的帮助在这个问题上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55353553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档