使用ASP.NET上傳圖片彙總

1 使用標準HTML來進行圖片上傳

前臺代碼:javascript

複製代碼
< 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 >
複製代碼


後臺代碼:html

 

複製代碼
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 單文件上傳java

        這是最基本的文件上傳,在asp.net1.x中沒有這個FileUpload控件,只有html的上傳控件,那時候要把html控件轉化爲服務器控件,很很差用。其實全部文件上傳的美麗效果都是從這個FileUpload控件衍生,第一個例子雖然簡單倒是根本。服務器

前臺代碼:asp.net

複製代碼
< 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 >
複製代碼

後臺代碼:post

複製代碼
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 多文件上傳
this

前臺代碼:spa

複製代碼
< 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 >
複製代碼

 後臺代碼:.net

複製代碼
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 客戶端檢查上傳文件類型(以上傳圖片爲例)
code

 

複製代碼
<% @ 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

相關文章
相關標籤/搜索