天天看點

C# 上傳大附件

大家都知道VS2008本身提供的控件比較簡單易用,但使用卻受到很多限制,比如說上,上傳時取消操作,多檔案上傳,上傳過程的進度顯示問題,要解決這些問題可以利用第三方插件aspnetupload,本人參考了書和網上文章發現都不完整或出現問題,研究了一下成功.

首先右鍵單擊網站根目錄,在彈出的快捷菜單中,選擇"添加引用"菜單項,彈出"添加引用",切換到"浏覽"找到元件的Dll檔案"Bestcomy.Web.Controls.Upload.dll"(本檔案可到官網www.aspnetupload.net下載下傳,本文後面也提供下載下傳),單擊"确定",回到VS2008工作界面,

Web.config的配置:

在<configSections>下面加入:

   <section name="aspnetUploadSettings" type="System.Configuration.NameValueFileSectionHandler,System, Version=2.2.0.60111, Culture=neutral,PublicKeyToken=b77a5c561934e089" />

在</appSections>中加入:

<aspnetUploadSettings>

 <!--

 Key Name: lisenceKey

 Valid Value: Purchased lisence key from the control author.

 -->

 <add key="lisenceKey" value="ERk5WdTrreEgnx9gAJ07Fz7XJ0cgnaB9o" />

 <!--

 Key Name: maxRequestLength

 Valid Value: KBytes size of maximum upload file length to accept

 -->

 <add key="maxRequestLength" value="2048000" />

 </aspnetUploadSettings>

本人一開始少加這個老上傳不成功,value="2048000"這裡可以自行修改相應的值.

在 <system.web>和 </system.web>之間找到 <httpModules> </httpModules>在這之間加入:

      <add name="UploadModule" type="Bestcomy.Web.Controls.Upload.UploadModule,Bestcomy.Web.Controls.Upload"/>

上傳前台代碼:

<div>

        <input type="file" name="file1" /><br />//注冊這是html控件,name都是"file1".

        <input type="file" name="file1" /><br />

        <input type="file" name="file1" /><br />

        <asp:Button ID="Button1" runat="server" Text="上傳" οnclick="Button1_Click" />

    </div>

背景代碼:

要加入using System.IO; using Bestcomy.Web.Controls.Upload; 這兩命名空間

protected void Page_Load(object sender, EventArgs e)

    {

        String fpath = Path.Combine(Request.PhysicalApplicationPath, "UploadFiles");

        if (!Directory.Exists(fpath))

            Directory.CreateDirectory(fpath);

        AspnetUpload upldr = new AspnetUpload();

        upldr.set_UploadFolder(fpath);

        upldr.RegisterModelessProgressBar(this.Button1);//這是注冊Button1的進度條,按<F5>運作後重新整了解決方案會看到一個檔案夾"aspnetUpload_Script"存放名為:ProgressBar.aspx的頁面,打開修改文字為中文.

    }

protected void Button1_Click(object sender, EventArgs e)

    {

        string fpath = Path.Combine(Request.PhysicalApplicationPath, "UploadFiles");

        UploadFileCollection files = AspnetUpload.GetUploadFiles("file1");

        foreach (UploadFile file in files)

        {

            //UploadFile file = AspnetUpload.GetUploadFile("file1");

            if (file != null)

                file.SaveAs(Path.Combine(fpath, Path.GetFileName(file.get_FileName())));

        }

    }

背景一個是判斷是否奇存在"UploadFiles"檔案夾,如果沒有就建立一個"UploadFiles"檔案夾在根目錄,另一個是按鈕事件,判斷後儲存每個上傳控件的檔案.

這樣就可以實作開始提出那些vs2008本身上傳控件做不到的功能了,如果想同時上傳更多的檔案,隻要多加一些" <input type="file" name="file1" />"就行了.如有問題,請留言交流.

Bestcomy.Web.Controls.Upload.dll下載下傳

繼續閱讀