Le téléchargement de blockblob et réglage contenttype
Je suis en utilisant Microsoft.WindowsAzure.Storage.*
de la bibliothèque à partir de C#.
C'est la façon dont je suis le téléchargement de choses de stockage:
//Store in storage
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("...connection string...");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("pictures");
//Create container if it doesnt exist
container.CreateIfNotExists();
//Make available to everyone
container.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
//Save image
CloudBlockBlob blockBlob = container.GetBlockBlobReference("blah.jpg");
blockBlob.UploadFromByteArray(byteArrayThumbnail, 0, byteArrayThumbnail.Length);
blockBlob.Properties.ContentType = "image/jpg"; //*** NOT WORKING ***
Toutes les choses que j'ai télécharger sur le stockage sont enregistrées avec un type de contenu "application/octet-stream", même si je suis en utilisant le setter avec la valeur "image/jpg" (voir la dernière ligne de mon code).
Donc, la question #1: Pourquoi ne pas travailler le ContentType setter?
Et à la question n ° 2: Si j'ai modifier manuellement le contenu de type "image/jpg", à l'aide de portail de gestion Windows Azure, puis copiez l'URI absolu du fichier dans le champ d'adresse du navigateur et appuyez sur entrée, le jpg fichier est téléchargé, au lieu de s'afficher. N'est-ce pas le type mime censé être affiché à la place de téléchargé? Comment puis-je changer cela?
OriginalL'auteur sports | 2014-07-07
Vous devez vous connecter pour publier un commentaire.
En fait, vous n'avez pas à appeler méthode SetProperties. Afin de définir un type de contenu pendant le chargement de la goutte, il suffit de régler le
ContentType
de la propriété avant d'appeler la méthode de téléchargement. Ainsi, votre code devrait être:et cela devrait faire l'affaire.
En fait j'ai essayé le téléchargement d'un fichier JPG et définissez son type de contenu à image/jpg. Quand j'ai mis l'URL dans le navigateur, j'ai été en mesure de voir l'image dans le navigateur. J'ai essayé avec IE/Firefox/Chrome. Pouvez vous s'il vous plaît trace de la demande/réponse dans un violon et de voir le contenu réel de type retourné par le service de stockage?
Vous téléchargé via un SDK ou directement à partir du Portail Azure? Je vais essayer de la trace
J'ai téléchargé via le SDK en utilisant le code ci-dessus.
En fait ce n'est pas vrai, je crois que vous pouvez voir ce comportement, car le nom de fichier ayant une extension. Si vous utilisez un autre identifiant pour le nom de la goutte (comme une clé de base de données) ou d'utiliser un nom qui n'est pas une extension, vous n'obtiendrez pas ce comportement.
OriginalL'auteur Gaurav Mantri
Fois que vous apportez des modifications à
Properties
, vous devez faire un appel à CloudBlockBlob.SetProperties() à fait enregistrer ces modifications.Il pense que quelque chose de semblable à LINQ-to-Entités. Vous pouvez faire toutes les modifications que vous souhaitez à votre local de l'objet, mais jusqu'à ce que vous appelez
SaveChanges()
, rien n'est fait enregistré.SetProperties
méthode doit être utilisée pour la mise à JOUR des blobs pas lors de la CRÉATION.SetProperties doit être utilisé pour n'importe quel moment, peu importe si c'est la première fois de créer ou de mettre à jour. De mon observation, si vous utilisez un nom de fichier (avec l'extension), alors la valeur par défaut est le ContentType à quelque chose qui correspond à l'extension. Si vous voulez vous assurer qu'il est toujours définit le type de contenu que vous attendez, je (1) transfert des données, (2) ensemble de votre contenu tye (3) appel SetProperties() azure.microsoft.com/en-us/documentation/articles/...
OriginalL'auteur Nathan A
avec la nouvelle version de l'Azure SDK ce n'est plus de travail.
cela a fonctionné pour moi:
OriginalL'auteur aumanjoa