您当前的位置: 首页 >  .net

写入和读取图片(c# asp.net sqlserver)

发布时间:2004-10-26 19:01:00 ,浏览量:0

作者:木子  http://blog.csdn.net/derny/ 首先要创建一个表包含自段image 和 type 类型各自为image 和 vnanchar

WebForm1.aspx

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ReadAndWritePicFromDB.WebForm1" %> WebForm1

WebForm1.aspx.cs

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Data.SqlClient;

namespace ReadAndWritePicFromDB {  ///  /// WebForm1 的摘要说明。  ///  public class WebForm1 : System.Web.UI.Page  {   protected System.Web.UI.HtmlControls.HtmlInputFile File1;   protected System.Web.UI.WebControls.Button Button1;   private string fileName = "" ;   protected System.Web.UI.WebControls.Button Button2;   private static SqlConnection conn  = null;      private void Page_Load(object sender, System.EventArgs e)   {    // 在此处放置用户代码以初始化页面    ConnectDB();   }

  //得到文件名   private string GetFile()   {    HttpPostedFile file = File1.PostedFile;    fileName = file.FileName;

   return fileName;   }

  //读取文件内容   private byte[] ReadFile()   {    FileStream file = File.OpenRead(GetFile());    byte[] content = new byte[file.Length];    file.Read(content,0,content.Length);    file.Close();        return content;   }

  //连接数据库   private void ConnectDB()   {    string connStr = "Initial Catalog=;Data Source=;User ID=;Password=;";    conn = new SqlConnection(connStr);    conn.Open();   }

  //写入图片到数据库中   private void WriteImage()   {    SqlCommand comm = conn.CreateCommand();    comm.CommandText = "insert into images(image,type) values(@image,@type)";    comm.CommandType = CommandType.Text;    SqlParameter param = comm.Parameters.Add("@image",SqlDbType.Image);    param.Value = ReadFile();    param = comm.Parameters.Add("@type",SqlDbType.NVarChar);    param.Value = GetContentType(new FileInfo(fileName).Extension.Remove(0,1));

   if(comm.ExecuteNonQuery() == 1)     Response.Write("Successful");    else     Response.Write("Fail");        conn.Close();   }

  //获取图片的后缀名   private string GetContentType(string extension)   {    string type = "";

   if(extension.Equals("jpg") || extension.Equals("JPG"))     type = "jpeg";    else     type = extension;

   return "image/"+type;   }

  //从数据库中读取图片   private void ReadImage()   {    SqlCommand comm = conn.CreateCommand();    comm.CommandText = "select image,type from images";    comm.CommandType = CommandType.Text;

   SqlDataReader reader = comm.ExecuteReader();    while(reader.Read())    {     Response.ContentType = reader["type"].ToString();//读写类型  一定要设置 否则浏览器会当作文本输出     Response.BinaryWrite((byte[])reader["image"]);//图片数据    }

   Response.Write("Successful");    Response.End();

   conn.Close();   }   #region Web 窗体设计器生成的代码   override protected void OnInit(EventArgs e)   {    //    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。    //    InitializeComponent();    base.OnInit(e);   }      ///   /// 设计器支持所需的方法 - 不要使用代码编辑器修改   /// 此方法的内容。   ///   private void InitializeComponent()   {       this.Button1.Click += new System.EventHandler(this.Button1_Click);    this.Button2.Click += new System.EventHandler(this.Button2_Click);    this.Load += new System.EventHandler(this.Page_Load);

  }   #endregion

  private void Button1_Click(object sender, System.EventArgs e)   {    WriteImage();   }

  private void Button2_Click(object sender, System.EventArgs e)   {    try    {     ReadImage();    }    catch(Exception ep)    {     conn.Close();     Response.End();    }   }  } }

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2576s