ASP.NET上传图片到数据库

来源:互联网 发布:互联网时代下的大数据 编辑:程序博客网 时间:2024/05/20 02:26

将图片以二进制流的方式整体上传到数据库里,读取显示时,以二进制流的方式整体读出。这种方法虽然麻烦一点,但保存的图片整体到了数据库里。这样主机变更时不会导致图片丢失。

数据库:Wxqcs_User

字段:Photo Imgae null

上传页面源码:

<asp:FileUpload ID=”FileUpload1″ runat=server” /><br />
<asp:Button ID=”btnSubPhoto” runat=server” Text=”上传”
=”btnSubPhoto_Click” />

后置代码:

protected void btnSubPhoto_Click(object sender, EventArgs e)
{
int len = FileUpload1.PostedFile.ContentLength;//图片大小
string name = FileUpload1.PostedFile.FileName;
string type = name.Substring(name.LastIndexOf(“.”) + 1);
byte[] content = new byte[len];//创建一个字节组,大小为图片大小,数据库中就存储这个东西
FileUpload1.PostedFile.InputStream.Read(content, 0, len);

SqlConnection Con = new SqlConnection(ConfigurationManager.AppSettings["ConSql"]);
Con.Open();

SqlCommand cmd = Con.CreateCommand();
cmd.CommandText = “insert into  Wxqcs_User (Photo) values (@content)”;
cmd.CommandType = CommandType.Text;

if (type == “jpg” || type == “gif” || type == “bmp” || type == “png”)
{
SqlParameter para = cmd.Parameters.Add(“@content”, SqlDbType.Image);
para.Value = content;
cmd.ExecuteNonQuery();
}
}

显示图片:

<asp:Image ID=”ShowPhoto” runat=server” Height=”132px” Width=”160px” />

ShowPhoto.ImageUrl = “Photo.aspx”;

Photo.aspx是由二进制编码生成的图片

CODE如下:

public partial class Photo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string imgid = Request.QueryString["imgid"];
SqlConnection conn1 = new SqlConnection(ConfigurationManager.AppSettings["ConSql"]);
SqlCommand cmd1 = new SqlCommand(“select Photo from Wxqcs_User where UserName=’” + Session["UserName"] + “‘”, conn1);
//固定显示Image_ID为3的图片
conn1.Open();
SqlDataReader sdr = cmd1.ExecuteReader();
if (sdr.Read())
{
Response.BinaryWrite((byte[])sdr["Photo"]);
}
Response.End();
}
}