asp.net上传文件

简介: 1 使用标准HTML来进行图片上传 前台代码:                                                                       使用标准HTML来进行图片上传                                      ...

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
        } 
    } 
}

 

 

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
4月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
75 0
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
38 0
|
7月前
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0
|
4月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
32 0
|
5月前
|
存储 开发框架 .NET
Asp.net就业课之Ado.net第一次课
Asp.net就业课之Ado.net第一次课
21 0
|
7月前
|
JSON C# 数据格式
.net core 上传文件到本地服务器
## 1、本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码 ```csharp [HttpGet, HttpPost, HttpOptions] [Consumes("application/json", "multipart/form-data")] public IActionResult UploadFileToServer([FromForm] IFormCollection file) { try { IFormFile item = null; if(file.IsNull() || file.Count
63 0
|
9月前
|
存储 开发框架 .NET
ASP.NET学生管理系统(.NET毕业设计)
ASP.NET学生管理系统(.NET毕业设计)
106 0
|
10月前
|
开发框架 前端开发 JavaScript
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
|
12月前
|
开发框架 .NET Apache
301重定向代码合集(iis,asp,php,asp.net,apache)
301重定向代码合集(iis,asp,php,asp.net,apache)
278 0