私は画像をデータベースに直接保存しています。ここで、リピーター コントロールをデータベースのイメージ フィールドにバインドします。データベースからすべての画像を読み込みたい。
質問する
3884 次
2 に答える
1
こんにちは Nimesh 次の方法を使用して、バイト配列からイメージを作成し、リピーターにバインドできます
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "BookName") %>
<hr>
<%# DataBinder.Eval(Container.DataItem, "BookDescription") %>
<td width="100px">
<p align="left">
<img src= '<%# GetImageFromByte(DataBinder.Eval(Container.DataItem, "Image")) %>'
alt="" style="height:200px;width:200px;border:1px solid gray;"/>
</td>
</p>
//////////////////////// ////////////////////////////
call GetImageFromByte this function from aspx as shown above and convert byte array to image and save in folder then return complete image path
public string GetImageFromByte(object byt)
{
byte[] byts = Convert.ToByte(byt);
return byteArrayToImage(byts);
}
private string byteArrayToImage(byte[] byteArrayIn)
{
System.Drawing.Image newImage;
string strFileName = "Filder path where image need to store " + "yourfilename.gif";
if (byteArrayIn != null)
{
using (MemoryStream stream = new MemoryStream(byteArrayIn))
{
newImage = System.Drawing.Image.FromStream(stream);
newImage.Save(strFileName);
img.Attributes.Add("src", strFileName);
}
lblMessage.Text = "The image conversion was successful.";
}
else
{
Response.Write("No image data found!");
}
return "Filder path where image need to store " + "yourfilename.gif";
}
于 2013-01-01T09:09:20.097 に答える
1
画像を保持するバイト ストリームを渡すことは、asp.net でこれを行う正しい方法ではありません。
画像を表示する最良の方法は、画像をサーバーに保存し、画像へのリンクのみを渡すことです (asp:Image
たとえば、コントロールを使用して)...
あなたの場合、私が推測する2つのオプションがあります:
アプリケーションをリファクタリングして画像をハードディスクに保存し、画像への URL のみをテキスト フィールドとして DB に保存します。
リクエストを受け取って画像を表示したい場合は、画像をサーバー上の一時ディレクトリに保存し、その一時画像ファイルへの URL をクライアントに渡します。
于 2013-01-01T07:40:09.767 に答える