.net之 HtmlInputFile

预实现效果:(上传文件,此处为图片,去掉图片验证,可以上传其他文件)

 

页面代码:

ExpandedBlockStart.gif 代码
<% @ Page language = " c# "  Codebehind = " testAdd.aspx.cs "  AutoEventWireup = " false "  Inherits = " DevSec.DH.Ums.DH.school.testAdd "   %>
< HTML >
    
< HEAD >
        
< title > NewsEdit </ title >
        
< meta  content ="False"  name ="vs_showGrid" >
        
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312" >
         
        
</ LINK >
        
< script  language ="javascript" >
        
function  OnChanagePic()
        {
            
var  fileImage  =  document.getElementById( " fileImage " );
            
/*  判断文件的扩展名称  */
            
var  extName  = " .gif,.bmp,.jpg,.png "
            
if (fileImage.value.length  !=   0 )
            {
                
var  fileExt  =  fileImage.value.substr(fileImage.value.length  -   4 ).toLowerCase();
                
// alert(extName.indexOf(fileExt));
                 if (extName.indexOf(fileExt)  ==   - 1 )
                {
                    alert(
" 上传的文件不正确!\r\n\r\n上传的文件应为: "   +  extName  +   " " );
                    window.event.returnValue 
=   false ;
                    
return   false ;                    
                }
                document.getElementById(
" imgBrowser " ).src  =  fileImage.value;
            }
        }
        
        
</ script >
    
</ HEAD >
    
< body >
        
< form  id ="FormNewsEdit"  method ="post"  runat ="server" >
            
< table  cellSpacing ="0"  cellPadding ="0"  width ="100%"  border ="0" >
                 
                
< tr >
                    
< td  align ="center"  height ="26" >
                        
< table  width ="100%"  border ="0"  class ="DataGrid" >
                              
                            
< tr >
                                
< td  noWrap colSpan ="4"  height ="26" >
                                    
< fieldset >
                                        
< legend >
                                              选择图片 
                                        
</ legend >
                                        
< table  width ="100%" >
                                            
< tr >
                                                
< td >< input  id ="fileImage"  style ="WIDTH:100%;CURSOR:hand"  onChange ="javascript:OnChanagePic();"
                                                        type
="file"  runat ="server"  class ="inputCss"  contentEditable ="false"  NAME ="fileImage" ></ td >
                                            
</ tr >
                                            
< tr >
                                                
< td  align ="center" >
                                                    
< asp:image  id ="imgBrowser"  runat ="server"  ImageUrl ="default.jpg"  ImageAlign ="AbsMiddle"
                                                        ToolTip
="图片预览"  Width ="120"  Height ="90" ></ asp:image ></ td >
                                            
</ tr >
                                        
</ table >
                                    
</ fieldset >
                                
</ td >
                            
</ tr >
                             
                        
</ table >
                    
</ td >
                
</ tr >
                
< tr >
                    
< td  vAlign ="bottom"  align ="center"  height ="30" >
                         
< asp:Button  id ="btnOkContinue"  runat ="server"  Text ="保存并继续"  ActIndex ="1" >   </ asp:Button >  
                
</ tr >
            
</ table >
             
        
</ form >
    
</ body >
</ HTML >

ps(说明):

(1)html的fieldset空间,类似panel框

     < fieldset >
        
< legend >
              标题
        
</ legend >
              内容
    
</ fieldset >

(2)htmlInputFile,<input id="cs中定义的名称" type = "file">即可出现附带浏览按钮的input框

< input  id ="fileImage"  style ="WIDTH:100% CURSOR:hand"  onChange ="javascript:OnChanagePic();"    type ="file"  runat ="server"  class ="inputCss"  contentEditable ="false"  NAME ="fileImage" >

为此框,指定OnChanagePic()函数调用,验证是否为所想要的文件类型

(3) 页面中使用了img控件,以便用户浏览图片,可以根据页面情况修改图片长宽..

< asp:image  id ="imgBrowser"  runat ="server"  ImageUrl ="default.jpg"  ImageAlign ="AbsMiddle"     ToolTip ="图片预览"  Width ="120"  Height ="90" ></ asp:image >

OnChanagePic()函数中,var fileImage = document.getElementById("fileImage");document.getElementById("imgBrowser").src = fileImage.value;设置img的图片地址..

(4)为img指定了默认图片ImageUrl="default.jpg",否则会显示各差号!

后台代码:

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Web;
using  System.Web.SessionState;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;

namespace  DevSec.DH.Ums.DH.school
{
    
///   <summary>
    
///  testAdd 的摘要说明。
    
///   </summary>
     public   class  testAdd : System.Web.UI.Page
    {
        
protected  System.Web.UI.WebControls.Image imgBrowser;
        
protected  System.Web.UI.WebControls.Button btnOkContinue;
        
protected  System.Web.UI.HtmlControls.HtmlInputFile fileImage;
    
        
private   void  Page_Load( object  sender, System.EventArgs e)
        {
            
//  在此处放置用户代码以初始化页面
        }

        
#region  Web 窗体设计器生成的代码
        
override   protected   void  OnInit(EventArgs e)
        {
            
//
            
//  CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base .OnInit(e);
        }
        
        
///   <summary>
        
///  设计器支持所需的方法 - 不要使用代码编辑器修改
        
///  此方法的内容。
        
///   </summary>
         private   void  InitializeComponent()
        {    
            
this .btnOkContinue.Click  +=   new  System.EventHandler( this .btnOkContinue_Click);
            
this .Load  +=   new  System.EventHandler( this .Page_Load);

        }
        
#endregion
        
        
///   <summary>
        
///  保存按钮事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  btnOkContinue_Click( object  sender, System.EventArgs e)
        {
             
string  str_res  =   this .updateImage( this .fileImage);
            
this .Response.Write( " <script> alert(' " + str_res + " ');</script> " );

        }

        
///   <summary>
        
///  客户端上传图片发至服务器指定文件夹
        
///  并获得保存至服务器的文件名称
        
///   </summary>
        
///   <param name="file"> 客户端HtmlInputFile控件的对象 </param>
        
///   <returns> 如果成功返回相对路径字符串否则为错误提示字符串 </returns>
         public   string  updateImage(System.Web.UI.HtmlControls.HtmlInputFile file) 
        {
            
// 要验证的文件格式
             string  [] imgType  =   new   string [] {  " image/gif " " image/pjpeg " " image/png " " image/bmp "  };
            
int  i  =   0 ;
            
bool  blean  =   false ;
            
string  message  =   string .Empty;
    
            
// 判断是否为Image类型文件
             while (i < imgType.Length)
            {
                
if (file.PostedFile.ContentType.Equals(imgType[i].ToString()))
                {
                    blean 
=   true ;
                    
break ;
                }
                
else   if (i  ==  (imgType.Length  -   1 ))
                {
                    
break ;
                }
                
else
                {
                    i
++ ;
                }
            }
    
            
// 对获得的路径进行分析处理 
             switch (blean)
            {
                
case   true :
                    
// 服务器路径
                     string  serverpath  =  System.Web.HttpContext.Current.Server.MapPath( " . " ) + " // " ;
                    
// 上传和返回(保存到数据库中)的路径
                     string  uppath  =   string .Empty,savepath  =   string .Empty;
                    
// 创建图片新的名称
                     string  nameImg  =  DateTime.Now.ToString( " new " + " yyyyMMddHHmmss " );
                    
// 获得上传图片的路径
                     string  strPath  =  file.Value;
                    
// 获得上传图片的类型(后缀名)
                     string  type  =  strPath.Substring(strPath.LastIndexOf( " . " ) + 1 ).ToLower();
                    
// 拼写数据库保存的相对路径字符串
                    savepath  =  nameImg  +   " . " +  type;
                    
// 拼写上传图片的路径(假设放在项目下的uploads文件夹内,且假设uploads文件夹存在,否则报错)
                    uppath  =  System.Web.HttpContext.Current.Server.MapPath( " ~/ " );
                    uppath 
+=   " uploads/ " ;
                    uppath 
+=  nameImg  +   " . "   +  type;
                    
// 上传图片
                    file.PostedFile.SaveAs(uppath);
                    message 
=   " 上传成功,文件名: " + savepath;
                    
break ;
                
case   false :
                    message 
=   " 您上传的类型有错,请重新选择! " ;
                    
break ;
                
default : break ;
            }
            
return  message;
        }
    }
}

ps:

(1)为页面按钮添加click事件,并调用方法 updateImage(fileImage),参数名称为HtmlInputFile的id

(2)主要方法:file.PostedFile.SaveAs(uppath); uppath为保存路径!

疑问::

上传的明明是jpg图片,而调用方法file.PostedFile.ContentType返回的确是image/pjpeg,不知道为啥?

 

 

 

 

转载于:https://www.cnblogs.com/9421/archive/2009/12/25/1632278.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值