如何在Azure Cosmos DB中存储图像?

Ash*_*ish 9 azure azure-cosmosdb

我有PNG图像,我想存储在宇宙数据库中以及一些元数据.存储它的最佳方法是什么?我不想单独存储在Azure bolb存储中,更好地存储数据.

Saj*_*ran 13

如果要将图像直接存储到cosmos db,可以使用DocumentClient.CreateAttachmentAsync方法直接存储它.

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" 
    });
}
Run Code Online (Sandbox Code Playgroud)

内部存储的附件没有固有的内置功能.相反,由您来存储它们然后引用它们.

最常见的模式是使用文档(例如,Azure存储中的blob)将URL存储到特定附件.

注意:一般情况下,您要将图像添加到CosmosDB中,查询会花费很多.建议的方法是将图像存储在Azure Blob中,并在Cosmos DB文档中添加链接,您可以利用Azure CDN之类的功能,使您的图像加载到您的移动设备上更快.

  • 谢谢@sajeetharan,我想从客户端上传图像并通过api将其发送到服务器以将其存储在数据库中.此外,我不想公开我的图像.我认为blob网址是公开的.所以只关注安全问题.什么是处理我提到的场景的最佳方式. (3认同)
  • 你可以阅读这个https://docs.microsoft.com/en-us/rest/api/storageservices/Delegating-Access-with-a-Shared-Access-Signature?redirectedfrom=MSDN (3认同)