2011-08-11 3 views
1

私は動的に画像を表示する必要があります。私はそれのためのコードを書いた、私は画像の名前を持っている&パスもデータベースからファイル名&私は以前に格納されたファイルパスが、私は画像を取得しませんでした。ここでイメージのimageurlをローカルホスト上に設定する方法を私に教えてください。私のコードは次の通りである:asp.netでダイナミックに作成された画像を表示する方法3.5 c#localhost

//PlaceHolder for adding images i.e inside formview control 
PlaceHolder PHFilename = (PlaceHolder)FVViewCustData.FindControl("PHFilename"); 
for (int i = 0; i < dsfile.Tables[0].Rows.Count; i++) 
{ 
    HyperLink hypname = new HyperLink(); 
    hypname.Text = Convert.ToString(dsfile.Tables[0].Rows[i]["FileName"]); 
    PHFilename.Controls.Add(hypname); 

    Image img = new Image(); 
    //IPAddress is my ipaddress 
    img.ImageUrl = "IPAddress" + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

    PHFilename.Controls.Add(img); 
} 
+0

データベース(「FilePath」列)には何を保存しますか?絶対パスか相対ファイルかファイル名か?レコードの例を表示できますか? – M4N

+0

あなたのコードの最後の2行目を実行した後に、img.ImageUrlに割り当てられている値をここに貼り付けることは可能ですか? – Waqas

答えて

1

あなたがイメージハンドラを使用して、動的にロードすることができDB内の画像データを保持する場合。

しかし、イメージURLをDBに保存する場合は、ファイル名または相対パスまたは絶対パスをどのように保存するかによって異なります。

最初の方法

C# Save and Load Image from Database

0

はあなたの問題を解決する方法はいくつかあり、いくつかのベース・ディレクトリの下に ストアすべてのあなたのイメージ - あなたはそれの下にサブディレクトリを持つことができます。データベースに保存するイメージパスは、このベースディレクトリからの相対パスになります。この基本ディレクトリをWebサイトの仮想ディレクトリとしてマップします。今、あなたは、設定値になります

string imageVirtualDir = "/StoredImages/"; 
img.ImageUrl = imageVirtualDir + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

言うまでもなく、ベース・ディレクトリ・パスと画像の仮想ディレクトリのパスのようなコードを使用することができます。

第2の方法: 希望する場所に画像を保存できます。データベースから完全な物理パスを取得したとしましょう。ですから、ここでは画像のURLなど

img.ImageUrl = "/ImageServer.ashx?path=" + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

を設定します、あなたのイメージを提供するために、単純なHTTPハンドラ(ImageServer.ashx)が必要になります - コードは

public class ImageServer : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     var path = context.Request["path"]; 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.TransmitFile(path); 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

ノートのようなものになることこれはあなたを始めるためのテンプレートコードです。プロダクションコードでは、エラー処理が必要で、イメージタイプごとに正しいコンテンツタイプを設定する必要があります。また、クエリ文字列に物理的な画像パスを持つことはお勧めできません。相対パスまたはトークンを渡す必要があります。たとえば、ローダーIDを渡して、ハンドラーがデータベースにクエリを出し、画像パスを取得できるようにします。

関連する問題