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

わかりました、あなたの質問と別の回答のコメントに基づいて、ブロブ名はあるが完全なURIはないようです。完全な blob uri は次のようになります。

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

既にコンテナー オブジェクトを操作しているため、ストレージ アカウント名 (おそらくアプリ設定の 1 つから) とコンテナー名 (既にコンテナー オブジェクトがあるため) を既に取得している必要があります。

この時点で、フルネームを簡単に組み立てることができるはずです。http または https のいずれかを選択できることに注意してください。Web/アプリ層からストレージに直接接続している場合は、トラフィックがデータ センター内にとどまるため、http を使用します。一方、エンドユーザー向けの Web ページに埋め込むリンクを作成している場合、データが何らかの形で機密である場合は、https を考慮する必要があります。

CloudBlockBlobBLOB を表すオブジェクトを介して完全な 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();

そして出力:

完全な URL

于 2013-08-15T17:44:04.920 に答える