我只是想知道是否可以在SQL Azure表格列中引用azure blob存储数据?
例如,假设我的SQL Azure数据库中有一个名为Users的表,该表中的一列是UserImage
,而不是创建UserImage
作为varbinary(MAX)
和将图像数据直接存储在表中,我希望将图像数据存储在blob存储中,获取对blob数据的引用并将该引用存储在UserImage
(varchar
??)列中在数据库中,然后以某种方式,当从Users表中读取行时,使用对该数据的引用从blob存储中访问关联的图像数据。
我问这个是因为blob存储比直接在SQL Azure中使用的二进制/ blob数据便宜得多。
答案 0 :(得分:5)
您应该只将图像存储在SQL Azure中,这是一个简短的片段,用于将图像上传到Blob存储并获取其Url:
// Fake stream that contains your image to upload
Stream data;
// Get a handle on account, create a blob service client and get container proxy
var container = Account.CreateCloudBlobClient()
.GetContainerReference("my-fake-container");
// Create a blob in container and upload image bytes to it
var blob = container.GetBlobReference("my-fake-id");
blob.Properties.ContentType = "image/jpeg";
blob.UploadFromStream(data);
// Get your iage Url in the Blob storage
var imageUrl = blob.Uri;
您现在只需将imageUrl存储在您的行中。
答案 1 :(得分:3)
您应该能够将URL存储到SQL Azure中的图像,并让客户端程序解析URL并显示URL中的图像。
我想不出有任何方法可以让SQL Azure直接进入Blob存储,我也不需要这样做,因为大多数客户端程序都可以使用URL以及BLOB。
答案 2 :(得分:0)
是....你可以通过在SQL Azure或其他地方存储url,然后获取url并将其传递给blob对象来实现这一点
void DoSthWithBlob(Uri blobUri, StorageCredentials credentials){
var blob = new CloudBlob(blobUri, credentials);
blob.FetchAttributes();
}