我想在数据库表中显示存储为字符串的图像。当我运行代码时,我收到错误“无效的URI,格式无法确定”。在表中,实际的字符串是这样的:13d2dr09-377-423c-993e-22db3l390b66
如何转换它以便识别它。
string sAdImageUrl = myReader.GetString(3);
var image = new BitmapImage();
int BytesToRead = 100;
WebRequest request = WebRequest.Create(new Uri(sAdImageUrl,UriKind.Absolute));
request.Timeout = -1;
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
BinaryReader reader = new BinaryReader(responseStream);
MemoryStream memoryStream = new MemoryStream();
byte[] bytebuffer = new byte[BytesToRead];
int bytesRead = reader.Read(bytebuffer, 0, BytesToRead);
while (bytesRead > 0)
{
memoryStream.Write(bytebuffer, 0, bytesRead);
bytesRead = reader.Read(bytebuffer, 0, BytesToRead);
}
image.BeginInit();
memoryStream.Seek(0, SeekOrigin.Begin);
image.StreamSource = memoryStream;
image.EndInit();
imaPartners.Source = image;
}
}
答案 0 :(得分:1)
好的,根据你的问题和另一个答案中的评论,听起来你有blob名称而不是完整的URI。完整的blob uri将是
http(s)://<cloudstorageaccountname>.blob.core.windows.net/<containername>/<blobname>
由于您已经在使用容器对象,因此您必须已经获取了存储帐户名称(可能来自您的某个应用程序设置),以及您的容器名称(因为您已有容器对象)。 / p>
此时,您应该可以轻松地组装全名。请注意,您可以选择http或https。如果您从网络/应用程序层直接连接到存储,请使用http作为流量保留在数据中心内。另一方面,如果您要创建链接以将网页嵌入最终用户,则应该考虑https,如果数据是敏感的话。
您可以通过代表blob的CloudBlockBlob
对象轻松访问完整的Uri。作为一个简单的例子,这是一个控制台应用程序的片段,展示了这一点:
var connString = CloudConfigurationManager.GetSetting("connectionString");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
var blob = container.GetBlockBlobReference("fr7_20_2013110753_jpg.jpg");
var uri = blob.Uri;
Console.WriteLine(uri);
Console.ReadLine();
输出: