我已将图像存储在本地mdf数据库中,以字节为单位。检索它时我遇到了麻烦。我正在使用ASP.net和c#。
错误1'System.Web.UI.WebControls.Image'不包含 'Image'的定义,没有扩展方法'Image'接受a “System.Web.UI.WebControls.Image”类型的第一个参数可以是 发现(您是否缺少using指令或程序集引用?)
错误2'图像'是一个模棱两可的参考 'System.Drawing.Image'和'System.Web.UI.WebControls.Image'
以下是我的代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Drawing;
using System.Web.UI.WebControls;
private void LoadImage()
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True");
con.Open();
try
{
//Fetching top recipe
string query = "Select Image FROM Recipe_Image where Image_Name = '"+VeganLbl1.Text+"'";
SqlCommand command = new SqlCommand(query, con);
SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
byte[] img = (byte[])dt.Rows[0][0];
MemoryStream ms = new MemoryStream(img);
Image1.Image = Image.FromStream(ms);
da.Dispose();
}
catch (Exception)
{
}
con.Close();
}
有没有人对如何完成此任务有任何想法并使其正常运行。一旦我能够做到这一点,我的所有代码都非常好。
同样是的,我知道我没有使用参数。一旦我能够显示图像,这将很快到来。
答案 0 :(得分:1)
你有几个问题
Image.FromStream(ms)
的错误图像类。而是写:System.Drawing.Image.FromStream(ms)
。 (但你还是不需要这个)Image.FromStream(ms)
返回image
个对象,Image1.ImageUrl
想要一个字符串路径。您需要做的是将Image1.ImageUrl
指向将图像字节数组写入响应流的页面。
在您的代码点到页面GetImage.aspx
Image1.ImageUrl = "GetImage.aspx";
在GetImage
页面中,将带有图像的内存流写入响应输出流:
Response.Clear();
Response.ContentType = "image/jpg"; //Or whatever it is
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();
答案 1 :(得分:0)
我更喜欢使这个HTML更易于管理,因此将SQL二进制文件传输到文件并使用HTML代码显示它。
尝试使用System.IO
命名空间将映像写入临时服务器位置,然后使用临时文件路径使用HTML标记显示它。在会话结束时删除临时文件。如果您需要代码,请告诉我。