2
votes

Azure Blob Storage V2 ne fournit plus d'en-tête de disposition de contenu

J'ai une question sur la propriété blob "content-disposition" d'un fichier dans Azure Blog Storage V2.

J'ai configuré cette propriété de mon fichier howto-201901.pdf en tant que «pièce jointe; filename = howto.pdf» avec Azure Storage Explorer 1.6.2 (voir capture d'écran) asn dans Azure Portal. La propriété est définie dans le fichier, mais n'est pas fournie en tant qu'informations d'en-tête lors du téléchargement.

Avec le stockage précédent V1, ce n'était pas un problème. Si j'ai téléchargé le fichier howto-2010901.pdf, la disposition du contenu de l'en-tête http était-elle définie et le navigateur a téléchargé le fichier comme ma configuration howto-pdf.

Mais depuis 2 ou 3 mois, peut-être depuis ma mise à niveau vers le stockage V2, cette fonctionnalité ne fonctionne pas. Le navigateur télécharge le fichier avec le nom d'origine.

Y a-t-il quelqu'un qui a des informations pour moi pour résoudre ce problème?

Meilleur Tino

 entrez la description de l'image ici


1 commentaires

J'ai trouvé la raison et une solution à ce comportement. Je suppose que les informations d'en-tête http content-disposition ne seront plus définies, si l'URL n'a pas de jeton SAS. Ajoutez le jeton SAS et vous gagnez. docs.microsoft. com / fr-fr / azure / storage / common /…


3 Réponses :


1
votes

Ceci est une solution possible et a fonctionné pour moi.

Au lieu de créer une nouvelle stratégie, pouvez-vous également prendre une stratégie existante de votre stockage d'objets blob. voir 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;
    }


0 commentaires

0
votes

Je suis confronté au même problème, mais je suis très confus à propos des SDK .NET et de la SharedAccessBlobPolicy .

J'utilise le SDK Azure.Storage.Blobs version 12.4.1 pour gérer le stockage. Est-il possible de l'utiliser pour définir SharedAccessBlobPolicy , ou suis-je censé le faire différemment? J'ai essayé de consulter la documentation, mais ce n'est pas vraiment utile, je n'ai pu trouver que des informations sur Microsoft.Azure.Storage.Blob version du SDK 11 qui est considérée comme héritée et obsolète maintenant.


0 commentaires

1
votes
L'en-tête

Content-Disposition en réponse n'est pas envoyé lorsque l'URL de téléchargement n'est pas authentifiée. Pour que le client reçoive Contenu-Disposition

  1. Créez un jeton SAS avec un accès limité.
  2. Ajoutez-le au lien de téléchargement d'objets blob.

0 commentaires