asp.net UpdatePanel实现无刷新上传图片

1)前台

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head runat="server">

  <title></title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

  <ContentTemplate>

  <asp:ScriptManager ID="ScriptManager1" runat="server">

  </asp:ScriptManager>

  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

  <asp:FileUpload ID="File1" runat="server" Width="200px" />

  </ContentTemplate>

  <Triggers>

  <asp:PostBackTrigger ControlID="Button1" />

  </Triggers>

  </asp:UpdatePanel>

  <asp:Image id="image1" ImageUrl="http://images.cnblogs.com/nopic.gif" Height="115px" Width="108px" runat="server"/>

  </div>

  </form>

  </body>

  </html>

  2)后台

  

复制代码 代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.IO;

  using System.Data.SqlClient;

  using System.Data;

  public partial class _Default:baseClass

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  }

  protected void Button1_Click(object sender, EventArgs e)

  {

  HttpPostedFile upFile = File1.PostedFile;

  int iFileLength = upFile.ContentLength;

  try

  {

  if (iFileLength == 0)

  {

  MessageBox("请选择要上传的文件!");

  }

  else

  {

  Byte[] FileByteArray = new Byte[iFileLength];

  Stream StreamObject = upFile.InputStream;

  StreamObject.Read(FileByteArray, 0, iFileLength);

  SqlConnection conn = new SqlConnection("server=.;database=Test;uid=sa;pwd=1234;");

  ExecuteBySQLNonQuery("delete from imageTable");

  SqlCommand cmd = new SqlCommand("insert into [imageTable] values(@image)", conn);

  cmd.Parameters.Add("@Image", SqlDbType.Binary, iFileLength).Value = FileByteArray;

  conn.Open();

  cmd.ExecuteNonQuery();

  conn.Close();

  MessageBox("已经成功上传了照片!");

  }

  image1.ImageUrl = "displayempphoto.ashx";

  }

  catch (Exception ex)

  {

  MessageBox(ex.Message);

  }

  }

  }

  3)建立一般处理文件displayempphoto.ashx

  

复制代码 代码如下:

  <%@ WebHandler Language="C#" Class="DisplayEmpPhoto" %>

  using System;

  using System.Web;

  using System.Data.SqlClient;

  using System.Web.Configuration;

  using System.Data;

  public class DisplayEmpPhoto : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  using (SqlConnection cn = new SqlConnection(WebConfigurationManager.ConnectionStrings["CONNECTIONSQL"].ConnectionString))

  {

  SqlCommand SQLCmd = cn.CreateCommand();

  SQLCmd.CommandText = "SELECT imagedata FROM imageTable";

  cn.Open();

  using (SqlDataReader dr = SQLCmd.ExecuteReader(CommandBehavior.SingleRow))

  {

  if (dr.Read())

  {

  // 改变 HTTP 文件头的输出格式,以便让浏览器知道所输出的文件格式是 JPEG 图文件。

  context.Response.ContentType = "Image/JPEG";

  context.Response.Clear();

  context.Response.BufferOutput = true;

  context.Response.BinaryWrite(dr.GetSqlBytes(0).Value);

  }

  }

  }

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }