在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
看看效果: 在专案中,创建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客户端事件。 复制代码 代码如下: 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" ; } } |
请发表评论