Соединитель AzureBlobStorage - CreateFile / DeleteFile - идентификатор, связь с клиентской библиотекой BLOB-объектов службы хранилища Azure для .NET

У меня есть Powerapp, использующий AzureBlobStorage Connector (коннектор). Однако это приложение должно взаимодействовать с данными, которые массово загружаются с помощью Клиентская библиотека BLOB-объектов службы хранилища Azure для .NET (api).

Когда вы создаете большой двоичный объект с помощью коннектора, вы получаете и идентификатор, который затем можно использовать для удаления большого двоичного объекта.

Однако при создании больших двоичных объектов с помощью api я не вижу, как мне получить этот идентификатор (вы просто используете blobid, который является именем файла). Следовательно, данные, которые создаются массово, не могут быть удалены в Power App.

Коннектор возвращает объект BlobMetadata. при вызове CreateFile.

API возвращает BlobContentInfo при вызове UploadBlob. Этот объект метаданных не содержит Id или чего-либо, соответствующего формату BlobMetadata.ID.

Кто-нибудь знает, как я могу получить этот идентификатор из API?


person gatapia    schedule 21.09.2020    source источник
comment
У меня ничего не получилось, но я нашел, как получить идентификатор формы PowerApps, используя контейнер / blobname.ext. Вы можете вызвать GetFileMetadataByPath . При этом добавляется еще один веб-вызов, однако он позволяет осуществлять интеграцию между Azure SDK и PowerApps / Flow.   -  person gatapia    schedule 22.09.2020


Ответы (1)


Вы можете получить метаданные Blob из BlobProperties.Metadata. Это документ об установке и получении метаданных с помощью .Net.

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

// Get a reference to a blob named "sample-file" in a container named "sample-container"
BlobClient blob = container.GetBlobClient(blobName);
await ReadBlobMetadataAsync(blob);

// Retrieve metadata
public static async Task ReadBlobMetadataAsync(BlobClient blob)
{
    try
    {
        // Get the blob's properties and metadata.
        BlobProperties properties = await blob.GetPropertiesAsync();

        Console.WriteLine(properties.BlobType);
        Console.WriteLine("Blob metadata:");
        

        // Enumerate the blob's metadata.
        foreach (var metadataItem in properties.Metadata)
        {
            Console.WriteLine($"\tKey: {metadataItem.Key}");
            Console.WriteLine($"\tValue: {metadataItem.Value}");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Вы также можете получить метаданные с помощью Azure-CLI, см. здесь.

person Pamela Peng    schedule 21.09.2020
comment
К сожалению, Id также отсутствует в BlobProperties или метаданных BlobProperties. Я просто перечислил значения метаданных и пустил их при использовании SDK для загрузки. - person gatapia; 21.09.2020
comment
@gatapia Может быть, есть два метаданных Blob, один для коннектора, другой - BlobProperties.Metadata. Кажется, нет SDK для метаданных коннектора. Вы можете попробовать вызвать приложение логики, чтобы получить метаданные файла, используя путь, см. здесь. - person Pamela Peng; 21.09.2020