Asp.Net--大ファイルのアップロード(ページタイムアウト)

6051 ワード

いくつかの方法:
  • ファイルアップロードサイズの変更
  • は、サーバ
  • にファイル形式で保存する.
  • バイナリバイトストリームに変換するデータベース
  • に保存する.
  • は、ディスク
  • にバイナリを循環的に書き込む.
    一、ファイルのアップロードサイズの制限を変更する
    Webを通じて义齿configファイルを修正する.
    サイトのルートディレクトリの下のwebに対して.configを変更するには、次の手順に従います.
    元:
    <httpRuntime executionTimeout="90" maxRequestLength="800000" useFullyQualifiedRedirectUrl="false"/>
    executionTimeoutを変更する、タイムアウト時間を変更することができる.maxRequestLengthを修正する、アップロードファイルの上限を変更することができる.
    マシンにMicrosoftNET\Framework\v1.1.4322\CONFIG\machine.configを変更するには、次の手順に従います.
    元:
    	<httpRuntime 
    
                executionTimeout="90"
    
                maxRequestLength="4096"
    
                useFullyQualifiedRedirectUrl="false"
    
                minFreeThreads="8"
    
                minLocalRequestFreeThreads="4"
    
                appRequestQueueLimit="100"
    
                enableVersionHeader="true"
    
            />
    executionTimeoutを変更する、タイムアウト時間を変更することができる.maxRequestLengthを修正する、アップロードファイルの上限を変更することができる.
    まだできます(テストしたことがなくて、役に立つかどうか分かりません):
    「サービス」でiis adminサービスをオフにします.C:WINDOWSsystem 32inetsrvの下のmetabaseを見つけます.xmlファイル.ASPMaxRequestEntityAllowedを見つけて必要な値(20 Mに変更可能:20480000)に変更し、iis adminサービスを再起動します.
     
    前提方法:
        private string GetFilePath()
    
        {
    
            string Folder = Server.MapPath("temp");
    
            string file = FileUpload1.FileName;
    
            string RealFile = Folder + "\\" + file;       
    
    
    
            return RealFile;
    
        }
     
    二、ファイル形式でサーバーに保存する
        protected void Upload_Click(object sender, EventArgs e)
    
        {
    
            string filename = FileUpload1.FileName;
    
            FileUpload1.SaveAs(Server.MapPath("source/") + filename);
    
    
    
        }
        protected void Button4_Click(object sender, EventArgs e)
    
        {
    
            HttpPostedFile posted = FileUpload1.PostedFile;
    
            string RealFile = GetFilePath();
    
            posted.SaveAs(RealFile);        
    
        }
        protected void Button1_Click(object sender, EventArgs e)
    
        {
    
            string filepath = GetFilePath();
    
            byte[] b = FileUpload1.FileBytes;
    
    
    
            FileStream fs = new FileStream(filepath, FileMode.Create);
    
            fs.Write(b, 0, b.Length);
    
            fs.Close();
    
        }
    三、バイナリバイトストリームに変換してデータベースに保存する
        protected void Button3_Click(object sender, EventArgs e)
    
        {
    
            HttpPostedFile posted = FileUpload1.PostedFile;
    
            byte[] b = new byte[posted.ContentLength];
    
            posted.InputStream.Read(b, 0, b.Length);
    
            /*
    
             *         
    
              */
    
        }
     
    四、バイナリを循環的にディスクに書き込む
        protected void Button3_Click(object sender, EventArgs e)
    
        {
    
            string filepath = GetFilePath();
    
            FileStream stream = new FileStream(filepath, FileMode.Create);
    
    
    
            int length = 20480;
    
            byte[] b = new byte[length];
    
            try
    
            {
    
                int size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
    
    
    
                while (size > 0)
    
                {
    
                    stream.Write(b, 0, size);
    
                    size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
    
                }
    
            }
    
            catch (Exception ex)
    
            {
    
                Response.Write(ex.Message + "<br/>");
    
                Response.Write(ex.InnerException.Message);
    
            }
    
            finally
    
            {
    
                if (stream != null)
    
                {
    
                    stream.Flush();
    
                    stream.Close();
    
                }
    
            }        
    
        }
     
    添付:
  • IISでスクリプトタイムアウト時間を大きくします.操作方法は、IISの「サイトまたは仮想ディレクトリ」の「ホームディレクトリ」の下で「構成」ボタンをクリックし、スクリプトタイムアウト時間を300秒(注意:Sessionタイムアウト時間ではない)
  • に設定します.
  • SERVER 2003で4 Mを超える添付ファイルをダウンロードできない問題を解決「サービス」でiis adminサービスをオフにします.Windowssystem 32inetsrvの下のmetabaseを見つけます.xmlファイル.AspBufferingLimitを見つけて、必要な値(20 M、20480000に変更可能)に変更し、iis adminサービスを再起動します.