看看效果: 

在专案中,创建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 runat="server"> 
<div> 
<table> 
<tr> 
<td> 
<fieldset> 
<legend>选择图片</legend> 
<asp:FileUpload runat="server" /> 
</fieldset> 
</td> 
<td> 
<fieldset> 
<legend>预览</legend> 
<asp:Image runat="server" Visible="false" /> 
</fieldset> 
</td> 
</tr> 
</table> 
</div> 
</form> 
</body> 
</html> 
在Page_Init事件中,为FileUpload控件,注册onchange客户端事件。
复制代码 代码如下:
 
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 
private void OnchangeHandle(string ctrl, string args) 
{ 
if (ctrl == this.FileUpload1.UniqueID && args == "onchange") 
{ 
this.Image1.Visible = true; 
Session["UploadBytes"] = this.FileUpload1.FileBytes; 
this.Image1.ImageUrl = "~/PreviewImage.axd" ; 
} 
} 
您可能感兴趣的文章:
