web-dev-qa-db-fra.com

Comment puis-je stocker des images dans Azure Cosmos DB?

J'ai des images PNG que je veux stocker dans Cosmos DB avec quelques métadonnées. Quelle est la meilleure façon de le stocker? Je ne veux pas stocker séparément dans le stockage d'objets blob Azure, mieux vaut stocker avec les données.

9
Ashish

Si vous souhaitez stocker des images directement dans la base de données cosmos, vous pouvez utiliser DocumentClient.CreateAttachmentAsync méthode pour le stocker directement.

using (FileStream fileStream = new FileStream(@".\something.pdf", FileMode.Open))
{
    //Create the attachment
    Attachment attachment = await client.CreateAttachmentAsync("dbs/db_rid/colls/coll_rid/docs/doc_rid/attachments/", 
    fileStream, 
    new MediaOptions 
    { 
       ContentType = "image/jpeg", 
       Slug = "myImage.jpeg" 
    });
}

Il n'y a rien de intrinsèquement intégré pour gérer les pièces jointes stockées en externe. C'est plutôt à vous de les stocker puis de les référencer.

Le modèle le plus courant consiste à stocker une URL vers la pièce jointe spécifique, avec un document (par exemple, vers un objet blob dans Azure Storage).

REMARQUE: Généralement, vous ajoutez des images dans CosmosDB, cela vous coûtera cher pour les requêtes. La méthode recommandée consiste à stocker l'image dans Azure Blob et à ajouter le lien dans le document Cosmos DB, vous pouvez profiter de choses comme Azure CDN qui accélèreront le chargement de vos images pour votre mobile.

12
Sajeetharan