Asp.Net–上傳大檔案(頁面逾時)

來源:互聯網
上載者:User

幾個方法:

    1. 修改檔案上傳大小的限制
    2. 以檔案形式儲存到伺服器
    3. 轉換成二進位位元組流儲存到資料庫
    4. 將二進位通過迴圈的方式寫入磁碟

一、修改檔案上傳大小的限制

通過對web.config和machine.config檔案進行修改.

對網站根目錄下的web.config進行修改:

原:

<httpRuntime executionTimeout="90" maxRequestLength="800000" useFullyQualifiedRedirectUrl="false"/>

對executionTimeout進行修改,可以修改逾時時間.對maxRequestLength進行修改,可以修改上傳檔案的上限.

對機器上Microsoft.NET\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 service 服務。
   找到 C:\WINDOWS\system32\inetsrv下的 metabase.xml 檔案。
   找到 ASPMaxRequestEntityAllowed 把它修改為需要的值(可修改為20M即:20480000)
   存檔,然後重啟 iis admin service 服務。

 

前提方法:

    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();            }        }            }

 

附:

  1. 在IIS中調大一些指令碼逾時時間,操作方法是: 在IIS的“網站或虛擬目錄”的“主目錄”下點擊“配置”按鈕,設定指令碼逾時時間為:300秒 (注意:不是Session逾時時間)
  2. 解決SERVER 2003無法下載超過4M的附件問題
    在“服務”裡關閉 iis admin service 服務。
    找到 windows\system32\inetsrv\ 下的 metabase.xml 檔案。
    找到 AspBufferingLimit 把它修改為需要的值(可修改為20M即:20480000)
    存檔,然後重啟 iis admin service 服務。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.