Asp.Netにおけるアップロードファイルの各基本操作について


一般的なB/Sモードで企業レベルのアーキテクチャにファイルをアップロードするのは一般的な業務操作である.はい.NET 1.1バージョンは、対応するクライアントHTMLバージョンのみのInputである.NET2.0バージョンでは、サーバ側のFileUploadコントロールが追加されました.
実はこのコントロールを設計する時に保証するために考えています.NET安全機構デフォルト設定はファイルアップロードのサイズが2 Mです.もちろんシステムのWebを修正することでConfigプロファイルは4 Mに達する.相対的にFileuploadは両刃の剣だ.使用時に長所を伸ばし短所を避けることが重要である.
開発者は、デフォルトのファイルサイズの上限が4 MBであるのは、当時の設計者が霊光を放ったからではなく、潜在的なDOS攻撃の危険を避けるためであることを理解しなければならない.攻撃者が1つ以上の大きなファイルをコミットした場合、サーバは重荷に耐えられないことが多い.ユーザーがアップロードしたファイルが4 MBより大きい場合、「Maximum request length exceeded.」异常情报もちろんこれらはAspにかかわる.Netプラットフォームの下で大きいファイルのアップロードの問題は次の節として討論して実現する.本章では主にAspを利用することを実現する.Netの中のFileUpload制御のいくつかの基本的な操作.
最近VS 2010 Beta 2バージョンをインストールしました.NET FrameWork 4.0.試してみる以下の項目の符号化はいずれもこの環境で実行する.
(A):簡単ファイルアップロード操作ページコード:

  
  
  
  
  1. --     
  2.  <asp:FileUpload ID="FileUpload5" runat="server" Width="475px"></asp:FileUpload>  
  3.  <asp:Button ID="TestFileType" runat="server" Text=" - "   
  4.             onclick="TestFileType_Click" OnClientClick="CheckFileType()" ></asp:Button> 

バックグラウンドButton時間操作コード:

  
  
  
  
  1. // -BasicOperatorDemo( ) -  
  2.    //Author:chenkai Date:2009 11 10 14:22:36  
  3.         protected void bt_upload_Click(object sender, EventArgs e)  
  4.         {  
  5.             try {  
  6.                 if (FileUpload1.PostedFile.FileName == "")  
  7.                 {  
  8.                     this.lb_info.Text = " !";  
  9.                 }  
  10.                 else 
  11.                 {  
  12.                     string filepath = FileUpload1.PostedFile.FileName.ToString();  
  13.                     string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);  
  14.  
  15.                     string serverpath = HttpContext.Current.Server.MapPath("Images/") + filename;  
  16.                        
  17.                     //      
  18.                     if (File.Exists(serverpath))  
  19.                     {  
  20.                         FileUpload1.SaveAs(serverpath);  
  21.                         this.lb_info.Text = " !";  
  22.                     }  
  23.                     else 
  24.                     {  
  25.                         //  
  26.                         File.Create(serverpath);  
  27.                     }  
  28.                         
  29.                 }  
  30.             }  
  31.             catch (Exception se)  
  32.             {  
  33.                 this.lb_info.Text = " ! :" + se.ToString();  
  34.             }  
  35.         } 

A:クライアントがアップロードするファイルの種類を制限する.作成したものしかアップロードできません.JPG/.Jpeg/.chm 3種類のファイルクライアント認証モード:

  
  
  
  
  1. <Script language="JavaScript" Type="JS/Text">  
  2.         // JS   Button onClintClick  
  3.         function CheckFileType() {  
  4.             //  
  5.             var str = document.getElementById("FileUpload5").value;  
  6.             alert(str);  
  7.          var pos = str.lastIndexOf(".");  
  8.          var lastname = str.substring(pos,str.length)    
  9.    
  10.         if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif")  
  11.          {  
  12.              alert(" "+lastname+", .jpg,.gif ");  
  13.              return false;  
  14.          }  
  15.        else   
  16.         {  
  17.              return true;  
  18.         }  
  19.         }  
  20.     </Script> 

ファイル型サーバー側認証モードのアップロード:

  
  
  
  
  1. /// <summary>  
  2.         ///   
  3.         /// Author:chenkai  Date:2009 11 11 10:44:26  
  4.         /// </summary>  
  5.         public bool CheckClintFileType(FileUpload getfile)  
  6.         {  
  7.             //  
  8.             System.IO.FileStream getstream=new FileStream(getfile.FileName,FileMode.Open,FileAccess.Read);  
  9.             System.IO.BinaryReader getreader = new BinaryReader(getstream);  
  10.  
  11.             string fileclass = string.Empty;  
  12.             byte buffer;  
  13.  
  14.             try  
  15.             {  
  16.                 //  
  17.                 buffer = getreader.ReadByte();  
  18.                 fileclass = buffer.ToString();  
  19.                 //