我有数据库和图像数据示例:0xFFD8FFE000104A46494600010100000100010000FFE1018C45786966000049492A0008000000020031010200070000002600000069870400010000002E00000000000000476F6F676C6500000500009007000400000030323230099007000B0000007000000086920700080100007B00000002A00400010000006F02000003A0
我觉得它是转换为字节的图像。 我的上传代码:
protected void Upload(object sender, EventArgs e)
{
FileUpload FileUpload1 = LoginView3.FindControl("FileUpload1") as FileUpload;
string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
string contentType = FileUpload1.PostedFile.ContentType;
string email = User.Identity.Name;
using (Stream fs = FileUpload1.PostedFile.InputStream)
{
using (BinaryReader br = new BinaryReader(fs))
{
byte[] bytes = br.ReadBytes((Int32)fs.Length);
string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
string query = "insert into tblFiles values (@Name, @ContentType, @Data, @email)";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Name", filename);
cmd.Parameters.AddWithValue("@ContentType", contentType);
cmd.Parameters.AddWithValue("@Data", bytes);
cmd.Parameters.AddWithValue("@email", email);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
Response.Redirect(Request.Url.AbsoluteUri);
}
现在,我必须从数据库转换数据并在浏览器中显示图像。 我正在寻找关于“image.fromstream”,“图像处理程序”,“base64”的教程和信息,我不知道我做错了什么。我正在寻找准备好的方法或教程或有关我应该阅读的新信息。 我的sql数据库代码:
CREATE TABLE [dbo].[tblFiles]
(
[id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
[ContentType] NVARCHAR (200) NOT NULL,
[Data] VARBINARY (MAX) NOT NULL,
[email] VARCHAR (50) NOT NULL
);
如果我使用“Image.fromstream”,我将会出现此错误“错误1'System.Web.UI.WebControls.Image'不包含'FromStream'的定义”或“错误1使用命名空间指令可以仅适用于名称空间;'System.Drawing.Image'是一种类型而不是名称空间“
我用这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Mvc;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.IO.Stream;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Drawing.Image;
答案 0 :(得分:1)
你不能发回一个imagbe对象。这不是HTML的工作方式。
您已经为每个图像生成了一个URL - 然后将其嵌入到HTML中,使用适当的标记显示图像。
当调用URL时,您将从数据库返回正确的元数据和图像的字节流。你通过处理程序/控制器操作来实现这一点。
但是你不能轻易地将图像嵌入到HTML中(这可能是对于类似的东西而言真的很糟糕)并且你不能返回System.Drawing或图像或其他东西 - 因为brwoser不是.NET