トップ回答者
コードからTableのセルに画像を表示したい

質問
回答
-
Imageコントロールを使って画像を表示しますので、URLで画像が表示できることが前提です。ImageコントロールのImageUrlプロパティの名前からもわかる通り、パスはURLになります。
Image.ImageUrl プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.image.imageurl(VS.80).aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36
-
Server.MapPath(".")はそのaspxファイルがある物理的なパスになります。保存場所はそれでも良いですが、ImageオブジェクトのImageUrlに物理的なパスは適しません。 ImageUrlには画像を表示するURLを指定して下さい。
なお、%20は、HtmlEncodeによって空白が%20に変換された結果です。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36
-
App_Dataはアプリケーションのデータファイルなどを入れておくところです。もし、このフォルダの中身が外部から見えてしまうと、セキュリティ上、重大な問題になります。一般的な例として、例えば会員情報のmdbファイルをブラウザからアクセスできるところに置いておくと、それを丸ごと取得され、いわゆる情報漏えいにつながります。
したがって、イメージファイルはApp_Data以外に置き、外部からURLでアクセスできるようにして下さい。例えばアプリケーションルートに置けば、以下のように指定できます。
ImageUrl="~/001.JPG"
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36
すべての返信
-
trapemiyaさんいつもお世話になっております。
最初は英語でぎょっとしましたが、なんてことはなかったです。
とても参考になりました。
Image image = new Image();
image.ImageUrl = Server.HtmlEncode(@"filepath");
TableCell1.Controls.Add(image);このようにした所画像をいれることができました。
ありがとうございます。
ただ・・・・
画像が表示されない場合のよく見るあのマークが表示されてしまい
肝心の実物は出てこない状態です・・・
何ででしょう。
-
Imageコントロールを使って画像を表示しますので、URLで画像が表示できることが前提です。ImageコントロールのImageUrlプロパティの名前からもわかる通り、パスはURLになります。
Image.ImageUrl プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.image.imageurl(VS.80).aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36
-
お世話になっております。
とりあえずjavascriptを調べてみたところよき文献が見つからず、かつ、はまりそうなのでやめときました。
ですので、いったんサーバに保存して表示する方法を試してみました。
保存はうまくいったのですが表示されません。
ただ、ちょっと気になる点があります。
下記のように保存しました。
FileUpload1.SaveAs(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG);
FileUpload1.SaveAs(Server.HtmlEncode(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG));
(¥はわざと大文字)
2パターン試しましたが同じフォルダに保存されます。
そして、このようなコードを書いて表示させようとしました。
Image image = new Image();
image.ImageUrl = Server.HtmlEncode(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG);
TableCell1.Controls.Add(image);それで表示しようとすると画像が出てこないのでソースを見てみたところ
画像のパスが下記のように表示されてました。
C:\Users\hoge\Documents\Visual%20Studio%202008\Projects\projectname\projectname\pic\00000001.JPG
%20 はどんないみなのでしょうか?
なぜ表示されないのでしょうか?
ご存知の方教えていただけましたら助かります。
-
Server.MapPath(".")はそのaspxファイルがある物理的なパスになります。保存場所はそれでも良いですが、ImageオブジェクトのImageUrlに物理的なパスは適しません。 ImageUrlには画像を表示するURLを指定して下さい。
なお、%20は、HtmlEncodeによって空白が%20に変換された結果です。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36
-
-
App_Dataはアプリケーションのデータファイルなどを入れておくところです。もし、このフォルダの中身が外部から見えてしまうと、セキュリティ上、重大な問題になります。一般的な例として、例えば会員情報のmdbファイルをブラウザからアクセスできるところに置いておくと、それを丸ごと取得され、いわゆる情報漏えいにつながります。
したがって、イメージファイルはApp_Data以外に置き、外部からURLでアクセスできるようにして下さい。例えばアプリケーションルートに置けば、以下のように指定できます。
ImageUrl="~/001.JPG"
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 極小テック 2010年7月30日 12:36