使用ASP.NET上传图片汇总

1 使用标准HTML来进行图片上传

前台代码:

< body >  
    
< form  id ="form1"  runat ="server" >  
    
< div >  
        
< table >  
            
< tr >  
                
< td  colspan ="2"  style ="height: 21px"   >  
                    使用标准HTML来进行图片上传
</ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 400px" >  
                    
< input  id ="InputFile"  style ="width: 399px"  type ="file"  runat ="server"   /></ td >  
                
< td  style ="width: 80px" >  
                    
< asp:Button  ID ="UploadButton"  runat ="server"  Text ="上传图片"  OnClick ="UploadButton_Click"   /></ td >  
            
</ tr >  
            
< tr >  
                
< td  colspan ="2"   >  
                    
< asp:Label  ID ="Lb_Info"  runat ="server"  ForeColor ="Red" ></ asp:Label ></ td >                  
            
</ tr >  
        
</ table >      
    
</ div >  
    
</ form >  
</ body >


后台代码:

 

using  System; 
using  System.Data; 
using  System.Configuration; 
using  System.Web; 
using  System.Web.Security; 
using  System.Web.UI; 
using  System.Web.UI.WebControls; 
using  System.Web.UI.WebControls.WebParts; 
using  System.Web.UI.HtmlControls; 

public   partial   class  _Default : System.Web.UI.Page  

    
protected   void  Page_Load( object  sender, EventArgs e) 
    { 

    } 
    
protected   void  UploadButton_Click( object  sender, EventArgs e) 
    { 
        
string  uploadName  =  InputFile.Value; // 获取待上传图片的完整路径,包括文件名 
        
// string uploadName = InputFile.PostedFile.FileName; 
         string  pictureName  =   "" ; // 上传后的图片名,以当前时间为文件名,确保文件名没有重复 
         if  (InputFile.Value  !=   ""
        { 
            
int  idx  =  uploadName.LastIndexOf( " . " ); 
            
string  suffix  =  uploadName.Substring(idx); // 获得上传的图片的后缀名 
            pictureName  =  DateTime.Now.Ticks.ToString()  +  suffix; 
        } 
        
try  
        { 
            
if  (uploadName  !=   ""
            { 
                
string  path  =  Server.MapPath( " ~/images/ " ); 
                InputFile.PostedFile.SaveAs(path 
+  pictureName); 
            } 
        } 
        
catch  (Exception ex) 
        { 
            Response.Write(ex); 
        } 
    } 
}


2 单文件上传

        这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件,很不好用。其实所有文件上传的美丽效果都是从这个FileUpload控件衍生,第一个例子虽然简单却是根本。

前台代码:

< body >  
    
< form  id ="form1"  runat ="server" >  
    
< div >  
        
< table  style ="width: 90%" >  
            
< tr >  
                
< td  style ="width: 159px"  colspan =2 >  
                    
< strong >< span  style ="font-size: 10pt" > 最简单的单文件上传 </ span ></ strong ></ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 600px" >  
                    
< asp:FileUpload  ID ="FileUpload1"  runat ="server"  Width ="600px"   /></ td >  
                
< td  align =left >  
                    
< asp:Button  ID ="FileUpload_Button"  runat ="server"  Text ="上传图片"  OnClick ="FileUpload_Button_Click"   /></ td >  
            
</ tr >  
            
< tr >  
                
< td  colspan =2 >  
                    
< asp:Label  ID ="Upload_info"  runat ="server"  ForeColor ="Red"  Width ="767px" ></ asp:Label ></ td >  
            
</ tr >  
        
</ table >      
    
</ div >  
    
</ form >  
</ body >

后台代码:

using  System; 
using  System.Data; 
using  System.Configuration; 
using  System.Web; 
using  System.Web.Security; 
using  System.Web.UI; 
using  System.Web.UI.WebControls; 
using  System.Web.UI.WebControls.WebParts; 
using  System.Web.UI.HtmlControls; 

public   partial   class  _Default : System.Web.UI.Page  

    
protected   void  Page_Load( object  sender, EventArgs e) 
    { 

    } 
    
protected   void  FileUpload_Button_Click( object  sender, EventArgs e) 
    { 
        
try  
        { 
            
if  (FileUpload1.PostedFile.FileName  ==   ""
            
// if (FileUpload1.FileName == "") 
            
// if (!FileUpload1.HasFile)      // 获取一个值,该值指示 System.Web.UI.WebControls.FileUpload 控件是否包含文件。包含文件,则为 true;否则为 false。 
            { 
                
this .Upload_info.Text  =   " 请选择上传文件! "
            } 
            
else  
            { 
                
string  filepath  =  FileUpload1.PostedFile.FileName;   // 得到的是文件的完整路径,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
                
// string filepath = FileUpload1.FileName;                // 得到上传的文件名20022775_m.jpg 
                 string  filename  =  filepath.Substring(filepath.LastIndexOf( " \\ " +   1 ); // 20022775_m.jpg 
                 string  serverpath  =  Server.MapPath( " ~/images/ " +  filename; // 取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg 
                FileUpload1.PostedFile.SaveAs(serverpath); // 将上传的文件另存为 
                 this .Upload_info.Text  =   " 上传成功! "
            } 
        } 
        
catch  (Exception ex) 
        { 
            
this .Upload_info.Text  =   " 上传发生错误!原因是: "   +  ex.ToString(); 
        } 
    } 
}




 3 多文件上传

前台代码:

< body >  
    
< form  id ="form1"  runat ="server" >  
    
< div >  
    
< table  style ="width: 343px" >  
            
< tr >  
                
< td  style ="width: 100px" >  
                    多文件上传
</ td >  
                
< td  style ="width: 100px" >  
                
</ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 100px" >  
                    
< asp:FileUpload  ID ="FileUpload1"  runat ="server"  Width ="475px"   />  
                    
</ td >  
                
< td  style ="width: 100px" >  
                    
</ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 100px" >  
                    
< asp:FileUpload  ID ="FileUpload2"  runat ="server"  Width ="475px"   /></ td >  
                
< td  style ="width: 100px" >  
                
</ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 100px" >  
                    
< asp:FileUpload  ID ="FileUpload3"  runat ="server"  Width ="475px"   /></ td >  
                
< td  style ="width: 100px" >  
                
</ td >  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 100px" >  
                    
< asp:Button  ID ="bt_upload"  runat ="server"  OnClick ="bt_upload_Click"  Text ="一起上传"   />  
                    
< asp:Label  ID ="lb_info"  runat ="server"  ForeColor ="Red"  Width ="448px" ></ asp:Label ></ td >  
                
< td  style ="width: 100px" >  
                
</ td >  
            
</ tr >  
        
</ table >  
    
</ div >  
    
</ form >  
</ body >

 后台代码:

using  System; 
using  System.Data; 
using  System.Configuration; 
using  System.Web; 
using  System.Web.Security; 
using  System.Web.UI; 
using  System.Web.UI.WebControls; 
using  System.Web.UI.WebControls.WebParts; 
using  System.Web.UI.HtmlControls; 

public   partial   class  _Default : System.Web.UI.Page  

    
protected   void  Page_Load( object  sender, EventArgs e) 
    { 

    } 
    
protected   void  bt_upload_Click( object  sender, EventArgs e) 
    { 
        
if  (FileUpload1.PostedFile.FileName  ==   ""   &&  FileUpload2.PostedFile.FileName  ==   ""   &&  FileUpload3.PostedFile.FileName  ==   ""
        { 
            
this .lb_info.Text  =   " 请选择文件! "
        } 
        
else  
        { 
            HttpFileCollection myfiles 
=  Request.Files; 
            
for  ( int  i  =   0 ; i  <  myfiles.Count; i ++
            { 
                HttpPostedFile mypost 
=  myfiles[i]; 
                
try  
                { 
                    
if  (mypost.ContentLength  >   0
                    { 
                        
string  filepath  =  mypost.FileName; // C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
                         string  filename  =  filepath.Substring(filepath.LastIndexOf( " \\ " +   1 ); // 20022775_m.jpg 
                         string  serverpath  =  Server.MapPath( " ~/images/ " +  filename; // C:\Inetpub\wwwroot\WebSite2\images\20022775_m.jpg 
                        mypost.SaveAs(serverpath); 
                        
this .lb_info.Text  =   " 上传成功! "
                    } 
                } 
                
catch  (Exception ex) 
                { 
                    
this .lb_info.Text  =   " 上传发生错误!原因: "   +  ex.Message.ToString(); 
                } 
            } 
        } 
    } 
}


  

4 客户端检查上传文件类型(以上传图片为例)

 

<% @ Page Language = " C# "  AutoEventWireup = " true "   CodeFile = " Default.aspx.cs "  Inherits = " _Default "   %>  

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >  

< html  xmlns ="http://www.w3.org/1999/xhtml"   >  
< head  runat ="server" >  
    
< title > 客户端检查上传文件类型 </ title >  
    
< script  language ="javascript" >  
    
function  Check_FileType() 
    { 
        
var  str = document.getElementById( " FileUpload1 " ).value; 
        
var  pos = str.lastIndexOf( " . " ); 
        
var  lastname = str.substring(pos,str.length); 
        
if (lastname.toLowerCase() != " .jpg " && lastname.toLowerCase() != " .gif "
        { 
            alert(
" 您上传的文件类型为 " + lastname + " ,图片必须为.jpg,.gif类型 " ); 
            
return   false
        } 
        
else  
        { 
            
return   true
        }         
    } 
    
</ script >  
</ head >  
< body >  
    
< form  id ="form1"  runat ="server" >  
    
< div >  
        
< table >  
            
< tr >  
                
< td  colspan ="2" >  
                    客户端检查上传文件类型
</ td >                  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 444px" >  
                    
< asp:FileUpload  ID ="FileUpload1"  runat ="server"  Width ="432px"   /></ td >  
                
< td  style ="width: 80px" >  
                    
< asp:Button  ID ="bt_upload"  runat ="server"  Text ="上传图片"  OnClick ="bt_upload_Click"  OnClientClick ="return Check_FileType()"   /></ td >  
            
</ tr >  
            
< tr >  
                
< td  colspan ="2"  style ="height: 21px" >  
                    
< asp:Label  ID ="lb_info"  runat ="server"  ForeColor ="Red"  Width ="515px" ></ asp:Label ></ td >                  
            
</ tr >  
        
</ table >      
    
</ div >  
    
</ form >  
</ body >  
</ html >


注意:点击上传时先触发客户端事件OnClientClick="return Check_FileType()"

 

using  System; 
using  System.Data; 
using  System.Configuration; 
using  System.Web; 
using  System.Web.Security; 
using  System.Web.UI; 
using  System.Web.UI.WebControls; 
using  System.Web.UI.WebControls.WebParts; 
using  System.Web.UI.HtmlControls; 

public   partial   class  _Default : System.Web.UI.Page  

    
protected   void  Page_Load( object  sender, EventArgs e) 
    { 

    } 

    
protected   void  bt_upload_Click( object  sender, EventArgs e) 
    { 
        
try  
        { 
            
if  (FileUpload1.PostedFile.FileName  ==   ""
            { 
                
this .lb_info.Text  =   " 请选择文件! "
            } 
            
else  
            { 
                
string  filepath  =  FileUpload1.PostedFile.FileName; 
                
// if (!IsAllowedExtension(FileUpload1)) 
                
//
                
//     this.lb_info.Text = "上传文件格式不正确!"; 
                
//
                 if  (IsAllowedExtension(FileUpload1)  ==   true
                { 
                    
string  filename  =  filepath.Substring(filepath.LastIndexOf( " \\ " +   1 ); 
                    
string  serverpath  =  Server.MapPath( " ~/images/ " +  filename; 
                    FileUpload1.PostedFile.SaveAs(serverpath); 
                    
this .lb_info.Text  =   " 上传成功! "
                } 
                
else  
                { 
                    
this .lb_info.Text  =   " 请上传图片! "
                } 
            } 
        } 
        
catch  (Exception ex) 
        { 
            
this .lb_info.Text  =   " 上传发生错误!原因: "   +  ex.ToString(); 
        } 
    } 
    
private   static   bool  IsAllowedExtension(FileUpload upfile) 
    { 
        
string  strOldFilePath  =   ""
        
string  strExtension = ""
        
string [] arrExtension  = " .gif " " .jpg " " .bmp " " .png "  }; 
        
if  (upfile.PostedFile.FileName  !=   string .Empty) 
        { 
            strOldFilePath 
=  upfile.PostedFile.FileName; // 获得文件的完整路径名 
            strExtension  =  strOldFilePath.Substring(strOldFilePath.LastIndexOf( " . " )); // 获得文件的扩展名,如:.jpg 
             for  ( int  i  =   0 ; i  <  arrExtension.Length; i ++
            { 
                
if  (strExtension.Equals(arrExtension[i])) 
                { 
                    
return   true
                } 
            } 
        } 
        
return   false
    } 
}


注意:若去掉客户端的脚本和客户端事件OnClientClick="return Check_FileType()",在后台代码
改为:

if  ( ! IsAllowedExtension(FileUpload1)) 
                { 
                    
this .lb_info.Text  =   " 上传文件格式不正确! "
                } 
else   if  (IsAllowedExtension(FileUpload1)  ==   true )


即变成服务器端检查上传文件类型。

5  服务器端检查上传文件的类型(文件内部真正的格式)

< body >  
    
< form  id ="form1"  runat ="server" >  
    
< div >  
        
< table >  
            
< tr >  
                
< td  colspan ="2" >  
                    服务器检查上传文件类型
</ td >                  
            
</ tr >  
            
< tr >  
                
< td  style ="width: 444px" >  
                    
< asp:FileUpload  ID ="FileUpload1"  runat ="server"  Width ="432px"   /></ td >  
                
< td  style ="width: 80px" >  
                    
< asp:Button  ID ="bt_upload"  runat ="server"  Text ="上传图片"  OnClick ="bt_upload_Click"   /></ td >  
            
</ tr >  
            
< tr >  
                
< td  colspan ="2"  style ="height: 21px" >  
                    
< asp:Label  ID ="lb_info"  runat ="server"  ForeColor ="Red"  Width ="515px" ></ asp:Label ></ td >                  
            
</ tr >  
        
</ table >      
    
</ div >  
    
</ form >  
</ body >

 

后台代码:

using  System; 
using  System.Data; 
using  System.Configuration; 
using  System.Web; 
using  System.Web.Security; 
using  System.Web.UI; 
using  System.Web.UI.WebControls; 
using  System.Web.UI.WebControls.WebParts; 
using  System.Web.UI.HtmlControls; 
using  System.IO; 

public   partial   class  _Default : System.Web.UI.Page  

    
protected   void  Page_Load( object  sender, EventArgs e) 
    { 

    } 
    
protected   void  bt_upload_Click( object  sender, EventArgs e) 
    { 
        
try  
        { 
            
if  (FileUpload1.PostedFile.FileName  ==   ""
            { 
                
this .lb_info.Text  =   " 请选择文件! "
            } 
            
else  
            { 
                
string  filepath  =  FileUpload1.PostedFile.FileName; 
                
if  (IsAllowedExtension(FileUpload1)  ==   true
                { 
                    
string  filename  =  filepath.Substring(filepath.LastIndexOf( " \\ " +   1 ); 
                    
string  serverpath  =  Server.MapPath( " images/ " +  filename; 
                    FileUpload1.PostedFile.SaveAs(serverpath); 
                    
this .lb_info.Text  =   " 上传成功! "
                } 
                
else  
                { 
                    
this .lb_info.Text  =   " 请上传图片 "
                } 
            } 
        } 
        
catch  (Exception error) 
        { 
            
this .lb_info.Text  =   " 上传发生错误!原因: "   +  error.ToString(); 
        } 
    } 
    
private   static   bool  IsAllowedExtension(FileUpload upfile) 
    { 
        FileStream fs 
=   new  FileStream(upfile.PostedFile.FileName, FileMode.Open, FileAccess.Read); 
        BinaryReader r 
=   new  BinaryReader(fs); 
        
string  fileclass  =   ""
        
byte  buffer; 
        
try  
        { 
            buffer 
=  r.ReadByte(); 
            fileclass 
=  buffer.ToString(); 
            buffer 
=  r.ReadByte(); 
            fileclass 
+=  buffer.ToString(); 
        } 
        
catch  
        {  
             
        } 
        r.Close(); 
        fs.Close(); 
        
if  (fileclass  ==   " 255216 "   ||  fileclass  ==   " 7173 " || fileclass == " 6677 " || fileclass == " 13780 " ) // 说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar 
        { 
            
return   true
        } 
        
else  
        { 
            
return   false
        } 
    } 
}

 

转自: http://blog.csdn.net/qing0991/archive/2008/09/06/2890654.aspx

 

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/08/21/1551200.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值