看看效果:

 

在专案中,创建aspx页面,拉上FileUpload控件一个Image,将用来预览上传时的图片。

View Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
                <tr>
                    <td style="vertical-align: top; width: 10%;">
                        <fieldset>
                            <legend>选择图片</legend>
                            <asp:FileUpload ID="FileUpload1" runat="server" />
                        </fieldset>
                    </td>
                    <td style="vertical-align: top; width: 90%;">
                        <fieldset>
                            <legend>预览</legend>
                            <asp:Image ID="Image1" runat="server" Visible="false" />
                        </fieldset>
                    </td>
                </tr>
            </table>           
        </div>
    </form>
</body>
</html>

 

在Page_Init事件中,为FileUpload控件,注册onchange客户端事件。

View Code
 protected void Page_Init(object sender, EventArgs e)
    {   
       this.FileUpload1.Attributes.Add("onchange", Page.ClientScript.GetPostBackEventReference(this.FileUpload1, "onchange"));
    }

 

接下来,Insus.NET一个axd处理文档,其实ImageProcessFactory.cs只是一个普能的类别,只实作了IHttpHandler接口。

ImageProcessFactory.cs
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.SessionState;


/// <summary>
/// Summary description for ImageProcessFactory
/// </summary>
namespace Insus.NET
{
    public class ImageProcessFactory : IHttpHandler,IRequiresSessionState
    {
        public ImageProcessFactory()
        {
            //
            
// TODO: Add constructor logic here
            
//
        }

        public void ProcessRequest(HttpContext context)
        {
            //Checking whether the UploadBytes session variable have anything else not doing anything

            if ((context.Session["UploadBytes"]) != null)
            {
                byte[] buffer = (byte[])(context.Session["UploadBytes"]);               
                context.Response.BinaryWrite(buffer); 

            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

为能能应到axd文档,需要在Web.Config中配置一下。 

View Code
<configuration> 
  <system.web>   
    <httpHandlers>
      <add verb="*" path="PreviewImage.axd" type="Insus.NET.ImageProcessFactory"/>
    </httpHandlers>    
  </system.web>
</configuration>

 

Ok,我们回到aspx.cs页面中,要在page_Load中,怎监控FileUpload控件是否有值变化:

View Code
 protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            var ctrl = Request.Params[Page.postEventSourceID];
            var args = Request.Params[Page.postEventArgumentID];

            OnchangeHandle(ctrl, args);
        }
    }

 

在Page_Load中有一个方法OnchangeHandle(xxx,xxx):

View Code

 

from:http://www.cnblogs.com/insus/archive/2012/11/13/2768951.html

 posted on 2013-01-26 11:25  纳米程序员  阅读(5746)  评论(1编辑  收藏  举报