博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileUpload上传图片前首先预览一下
阅读量:5882 次
发布时间:2019-06-19

本文共 2470 字,大约阅读时间需要 8 分钟。

 

看看效果:

 

在专案中,创建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://yepix.baihongyu.com/

你可能感兴趣的文章
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>
第四十期百度技术沙龙笔记整理
查看>>
推荐系统那点事 —— 基于Spark MLlib的特征选择
查看>>