указатели для REST API Чтобы получить доступ к файлам или перечислить их в контейнере хранилища BLOB-объектов - PullRequest
0 голосов
/ 26 марта 2019

Я очень новичок в Microsoft Azure.Мне было дано задание перечислить все файлы в контейнере хранилища BLOB-объектов Azure.Ниже приведены данные, которые у меня есть для задачи

У меня ниже детали:

Учетная запись хранения - accdevtesthw

Тип учетной записи хранения - blob

Имя контейнера - Учащиеся

Папки - Метки и подробности

Ключ учетной записи хранения -

Пожалуйста, дайте мне знать, как получить REST URL, чтобы получить список всех файлов в Маркахпапка в моем контейнере.

я пробовал с нижеуказанным URL, но потерпел неудачу с упомянутой ошибкой

https://accdevtesthw.blob.core.windows.net/Students/Marks?comp=list

ошибка:

<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 с подробностями, которые мне дали

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

У меня была такая же проблема. Я решил это, добавив параметр 'prefix' в Uri. В вашем случае я думаю, что вам нужно:

https://accdevtesthw.blob.core.windows.net/Students?comp=list&prefix=Marks

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

0 голосов
/ 26 марта 2019

См. Предложение, упомянутое в этом SO thread

. Операция List Blobs перечисляет список больших двоичных объектов в указанном контейнере.

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);
}
Или Вы можете попробовать этот вариант тоже

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 ссылке

Пожалуйста, сообщите нам, если вышеуказанное поможет илиВам нужна дополнительная помощь по этому вопросу.

...