Azure Blob Storage V2 больше не доставляет заголовок размещения контента - PullRequest
0 голосов
/ 16 января 2019

У меня есть вопрос о свойстве BLOB-объекта "Content-disposition" файла в хранилище блогов Azure V2.

Я настроил это свойство моего файла howto-201901.pdf как «attachment; filename = howto.pdf» с помощью Azure Storage Explorer 1.6.2 (см. Скриншот) asn в портале Azure. Свойство задается в файле, но не доставляется в качестве информации заголовка при загрузке.

С предыдущим хранилищем V1 не было ли проблем. Если я скачал файл howto-2010901.pdf, было установлено расположение содержимого заголовка http, и браузер загрузил файл, как моя конфигурация howto-pdf.

Но через 2 или 3 месяца, может быть, после моего обновления до хранилища V2 эта функция не работает. Браузер загрузит файл с оригинальным именем.

Есть ли кто-нибудь, у кого есть информация для меня, чтобы решить это поведение?

Лучшее Тино

enter image description here

1 Ответ

0 голосов
/ 16 января 2019

Это возможное решение и сработало для меня.

Вместо создания новой политики вы можете также взять существующую политику из хранилища больших двоичных объектов. см https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1

    private Uri GetDownloadUri(CloudBlockBlob blob)
    {
        try
        {
            // Return the SAS token.
            var query = GenerateSASQueryString(blob);

            UriBuilder newUri = new UriBuilder(blob.Uri)
            {
                Query = query
            };

            return newUri.Uri;
        }
        catch (UriFormatException ex)
        {
            Console.WriteLine(ex);
        }

        return blob.Uri;
    }

    private string GenerateSASQueryString(CloudBlockBlob blob)
    {
        if (blob == null)
            return null;

        // Create a new access policy for the account.
        SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy
        {
            Permissions = SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddHours(24),
            SharedAccessStartTime = DateTimeOffset.UtcNow
        };

        // Return the SAS token.
        var query = blob.GetSharedAccessSignature(policy);
        return query;
    }
...