fileupload图片预览功能

FileUpload上传图片前首先预览一下

看看效果:

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

复制代码
<%@ 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接口。

按 Ctrl+C 复制代码
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; } } } }
按 Ctrl+C 复制代码

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

复制代码
< configuration >
< system.web >
< httpHandlers >
< add verb ="*" path ="PreviewImage.axd" type ="Insus.NET.ImageProcessFactory" />
</ httpHandlers >
</ system.web >
</ configuration >
复制代码

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

复制代码
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):

按 Ctrl+C 复制代码
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" ; } }
按 Ctrl+C 复制代码

转载于:https://www.cnblogs.com/pengmincd/p/4019532.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值