3

1行のselectステートメントの結果セットから(SQL Server 2008のストアドプロシージャを介して)入力されたデータテーブルがあり、Image画像を保存する型指定された列が含まれています.

asp:imageaspx ページにコントロールがあり、そのデータテーブルの対応するフィールドに画像を設定したいのですが、何もできません。コードビハインドからasp:imageそのデータテーブルのto image列を設定する方法を教えてください。

4

4 に答える 4

3

を入れることができる<img src="data:image/png;base64,<BASE64 STRING>" />ので、asp:imageImageUrlプロパティを に設定し"data:image/png;base64,xxx"ます。

ただし、これに対するブラウザーのサポートはむらがあり、IE9 と firefox では正常に動作すると思われますが、古いブラウザーでこれがサポートされているかどうかはわかりません。

ashxただし、データベースを読み取って画像を返す汎用ハンドラーを作成することをお勧めします。方法については、次の Web サイトを参照してください: http://www.dotnetperls.com/ashx 。次に、ImageUrlプロパティをこのハンドラ アドレスに設定します。

于 2012-04-13T15:08:49.147 に答える
2

ASP.Net を使用して SQL Server データベースから画像を表示する

aspx ファイル

<asp:image ID="Image1" runat="server" ImageUrl ="ImageCSharp.aspx?ImageID=1"/>

csファイル

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["ImageID"] != null)
   {
        string strQuery = "select Name, ContentType, Data from tblFiles where id=@id";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@id", SqlDbType.Int).Value
        = Convert.ToInt32 (Request.QueryString["ImageID"]);
        DataTable dt = GetData(cmd);
        if (dt != null)
        {
            Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
            Response.Buffer = true;
            Response.Charset = "";
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = dt.Rows[0]["ContentType"].ToString();
            Response.AddHeader("content-disposition", "attachment;filename="
            + dt.Rows[0]["Name"].ToString());
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
        }
    }
}
于 2012-04-13T15:11:19.140 に答える
2

データ URL スキームを試してください:

<img src="<%# ReturnEncodedBase64UTF8(Eval("ColumnA")) %>" />

protected static string ReturnEncodedBase64UTF8(object rawImg)
{
    string img = "data:image/gif;base64,{0}"; //change image type if need be
    byte[] toEncodeAsBytes = (byte[])rawImg;        
    string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
    return String.Format(img, returnValue);
}
于 2012-04-13T15:13:56.450 に答える
1

Convert.ToBase64String を使用するだけで

        byte[] bytes = (byte[])dr["YourImageField"];
        string b64img = Convert.ToBase64String(bytes);
        Image1.ImageUrl = "data:image/jpeg;base64," + b64img;
于 2016-08-11T09:49:57.423 に答える