1

我想在数据库表中显示存储为字符串的图像。当我运行代码时,我收到错误“无效的 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;

            }
        }
4

1 回答 1

1

好的,根据您的问题和另一个答案中的评论,听起来您有 blob 名称,但没有完整的 URI。完整的 blob uri 将是

http(s)://<cloudstorageaccountname>.blob.core.windows.net/<containername>/<blobname>

由于您已经在使用容器对象,因此您必须已经获取了存储帐户名称(可能来自您的应用设置之一)以及您的容器名称(因为您已经拥有一个容器对象)。

此时,您应该可以轻松组装全名。请注意,您可以选择 http 或 https。如果您从 Web/应用程序层直接连接到存储,请使用 http,因为流量停留在数据中心内。另一方面,如果您正在创建链接以嵌入到最终用户的网页中,那么如果数据以任何方式敏感,您应该考虑使用 https。

CloudBlockBlob您可以通过代表您的 blob的对象轻松获取完整的 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();

和输出:

完整网址

于 2013-08-15T17:44:04.920 回答