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;
        }
    }

}

你可能感兴趣的:(update)