• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ASP.NET 的大文件上傳模塊研究與實現(xiàn)

      2015-06-02 12:30趙學(xué)孔龍世榮
      電腦知識與技術(shù) 2015年9期

      趙學(xué)孔 龍世榮

      摘要:ASP.NET作為當(dāng)前開發(fā)動態(tài)Web程序的主流技術(shù)備受系統(tǒng)開發(fā)者的青睞,但其內(nèi)置的FileUpload控件對上傳大文件的限制成為了眾多系統(tǒng)開發(fā)的瓶頸。該文詳細(xì)描述了ASP.NET中如何通過引入第三方開源免費的組件實現(xiàn)大文件上傳的技術(shù)方案。

      關(guān)鍵詞:ASP.NET;大文件上傳;RadUpload

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)09-0112-02

      Abstract: As a mainstream technology for developing dynamic Web program,ASP.NET has won the developersfavour.But its built-in FileUpload component for restricting large file becomes a bottleneck problems of many system developers.This paper describes the technical proposal that uploads large files with free third-component based on ASP.NET.

      Key words: ASP.NET; large file upload; RadUpload

      當(dāng)前,ASP.NET因其擁有豐富的控件和強(qiáng)大的類庫而成為開發(fā)動態(tài)Web程序的主流技術(shù)之一,利用它可以開發(fā)各種桌面軟件或Web系統(tǒng)。大文件上傳是許多系統(tǒng)開發(fā)中經(jīng)常使用的功能模塊,尤其對于一些視頻網(wǎng)站而言,往往需要上傳超大視頻文件。然而ASP.NET內(nèi)置的FileUpload控件對上傳大文件有限制,其影響了用戶體驗度。為此,探究基于ASP.NET的大文件上傳具有現(xiàn)實意義。

      1 ASP.NET中FileUpload控件應(yīng)用現(xiàn)狀

      ASP.NET是微軟公司提出的一種專用于開發(fā)桌面軟件或動態(tài)Web網(wǎng)頁程序的技術(shù),具有簡便易用的特點[1]。FileUpload是ASP.NET中經(jīng)常用到的上傳文件控件,其主要功能是向服務(wù)器指定的目錄上傳文件。FileUpload控件具有如下優(yōu)點:1)具有可視化的操作界面,借助Microsoft Visual Studio開發(fā)工具可以直接拖拽該控件至頁面程序片段中即可,不需要編寫程序?qū)崿F(xiàn);2)具有豐富的上傳屬性,如FileContent、FileName、HasFile等[2],可以利用它們快速獲取上傳文件信息;3)SaveAs方法調(diào)用靈活,程序片段中直接調(diào)用封裝的SaveAs方法即可將本地文件上傳至服務(wù)器。但是,F(xiàn)ileUpload在實際應(yīng)用過程中也暴露出了一些問題:1)不適合大文件上傳,默認(rèn)情況下上傳的文件僅限于4M以內(nèi);2)不具有文件上傳進(jìn)度條,用戶體驗度不高。為此,眾多系統(tǒng)開發(fā)者選擇了自己開發(fā)控件或借助第三方開源免費組件的方式來上傳大文件。

      2 ASP.NET中大文件上傳解決方案

      考慮到系統(tǒng)開發(fā)的高效性與穩(wěn)定性,本研究擬采用第三方開源免費組件來解決大文件上傳問題。文件上傳模塊的實現(xiàn)主要涉及到頁面和數(shù)據(jù)庫設(shè)計、后臺程序的編寫兩方面技術(shù)。

      2.1 文件上傳模塊設(shè)計

      一般而言,文件上傳模塊在系統(tǒng)中的呈現(xiàn)方式是靈活多樣的,其可以是單獨的上傳頁面形式,也可以是嵌入在頁面中的“附件”形式。而對于開發(fā)者來說,不管是何種上傳形式,在文件上傳頁面中應(yīng)能獲取到文件名、文件簡介、上傳路徑、上傳作者、上傳時間等關(guān)鍵信息,對應(yīng)的數(shù)據(jù)庫字段依次可設(shè)置為FileName、FileInfo、UpDir、UpUser、UpTime。

      2.2 上傳組件介紹

      目前,網(wǎng)絡(luò)上出現(xiàn)的第三方大文件上傳組件很多,如Uploadify、FancyUpload、AjaxFileUpload、jqUploader和RadUpload等[3]。此時選取一個適合當(dāng)前系統(tǒng)開發(fā)需要的組件尤為重要,應(yīng)注意如下原則:1)滿足開發(fā)環(huán)境(Java/ASP.NET/Php等)的需要;2)操作簡單,適合各級開發(fā)者使用;3)功能豐富、界面友好。結(jié)合筆者系統(tǒng)開發(fā)經(jīng)驗,本研究主要選取RadUpload作為上傳組件,其具有如下特點:1)適合ASP.NET開發(fā)環(huán)境要求;2)該組件和ASP.NET內(nèi)置的FileUpload控件進(jìn)行了很好的融合,其屬性和方法可互通,方便學(xué)習(xí)使用;3)對上傳文件的大小沒有限制,可以上傳超大文件;4)帶有可視化的上傳進(jìn)度條功能,用戶體驗度高;5)開源免費使用,便于二次開發(fā)。

      2.3 關(guān)鍵技術(shù)

      2.3.1 添加RadUpload組件引用

      在RadUpload組件包中,主要包括RadUpload.Net2.dll、Telerik.QuickStart.dll和RadUpload.Net2.xml三個文件。其中,RadUpload.Net2.dll和Telerik.QuickStart.dll是RadUpload上傳組件的核心文件,封裝了許多方法,如SaveAs、GetFiles等;RadUpload.Net2.xml用戶定義RadUpload組件的界面及樣式。系統(tǒng)開發(fā)中,需要將以上三個文件放置到Bin文件目錄下面,然后在頁面中分別添加以下代碼即可引用。

      1)在前臺Aspx文件頭部分別添加:

      <%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" Assembly="Telerik.QuickStart" %>

      <%@ Register TagPrefix="radU" Namespace="Telerik.WebControls" Assembly="RadUpload.Net2" %>;在Body標(biāo)簽中添加:

      2)在后臺CS文件中添加命名空間:using Telerik.WebControls;

      2.3.2 編輯Web配置文件

      Web配置文件可用來定義系統(tǒng)的全局變量及屬性。在服務(wù)器調(diào)用RadUpload組件方法前,需要在Web配置文件中添加聲明,并設(shè)置上傳文件的最大值和最長時間。其具體方法如下:

      1)在“”結(jié)點之間添加上傳文件的最大值和最長時間:。此處表示上傳的文件最大為300M,用時最長為1小時。

      2)在“”結(jié)點之間添加RadUpload組件聲明:

      2.3.3 編寫服務(wù)器端代碼

      配置好以上參數(shù)后即可開始編寫服務(wù)器端腳本。客戶機(jī)中的文件上傳是通過調(diào)用服務(wù)器端FileUpload控件中的Button按鈕事件來實現(xiàn)的,因此,上傳文件的代碼需要寫在服務(wù)器端Button按鈕事件中。關(guān)鍵代碼如下:

      protected void btnSave_Click(object sender, EventArgs e){ //Button按鈕事件

      if (RadUploadContext.Current.UploadedFiles.Count <= 0){ return; }

      foreach (UploadedFile file in RadUploadContext.Current.UploadedFiles){

      string Path = Server.MapPath("UpFiles/uploadfiles/");

      string fileName = file.GetName();

      Path = Path + fileName;

      file.SaveAs(Path, true); //通過調(diào)用RadUpload的SaveAs方法上傳文件

      FileMis.Model.UpFiles model = new FileMis.Model. UpFiles ();

      model.FileName = fileName;

      model. FileInfo = TxtFileInfo.Text;

      model. UpDir = Path;

      model. UpUser = Session("username");

      model. UpTime = DateTime.Now.ToString("yyyyMMddHHmmss");

      FileMis.BLL. UpFiles bll = new FileMis.BLL. UpFiles ();

      bll.Add(model); //向數(shù)據(jù)庫插入新記錄

      }

      }

      3 大文件上傳模塊實現(xiàn)效果

      筆者曾參與多項大型系統(tǒng)研發(fā)工作,其中很多系統(tǒng)都使用到以上大文件上傳解決方案。以廣西中小學(xué)微課資源網(wǎng)為例,本網(wǎng)站是在廣西教育廳教師培訓(xùn)中心的領(lǐng)導(dǎo)下建立的面向廣西中小學(xué)教師征集優(yōu)質(zhì)案例資源的門戶網(wǎng)站系統(tǒng)。該系統(tǒng)須承載高并發(fā)、大文件上傳的基本需求,可以滿足廣大教師同時上傳課堂錄像文件(詳見下圖1)。實踐結(jié)果表明,利用以上解決方案可以上傳超過2G的視頻文件,且系統(tǒng)運行穩(wěn)定。

      4 結(jié)束語

      基于ASP.NET的大文件上傳是系統(tǒng)開發(fā)中經(jīng)常遇到的一個棘手問題。利用第三方開源免費的大文件上傳組件(如RadUpload)可以有效解決文件上傳問題。本文以RadUpload為例描述了如何借助第三方組件實現(xiàn)大文件上傳的技術(shù)方案,以期為相關(guān)研究領(lǐng)域和實踐開發(fā)者提供參考借鑒。在后續(xù)研究中,我們將進(jìn)一步探索大文件斷點續(xù)傳的技術(shù)方案。

      參考文獻(xiàn):

      [1] 張再華. 基于ASP.NET的Web服務(wù)及其開發(fā)技術(shù)[J]. 軟件導(dǎo)刊, 2012(4): 134-135.

      [2] 李志華, 林財興. 利用FileUpload控件實現(xiàn)多文件上傳[J]. 科技信息, 2008(28): 390-391.

      [3] 王申, 楊宇鵬. 基于Java的文件上傳組件的實現(xiàn)[J]. 電腦編程技巧與維護(hù), 2005(8): 227-229.

      桃园市| 永平县| 华容县| 巴中市| 阳曲县| 呼玛县| 丰城市| 明光市| 兴山县| 彭泽县| 秦皇岛市| 正阳县| 太康县| 滦南县| 自治县| 桐柏县| 社会| 永安市| 江华| 和平县| 深州市| 福安市| 托里县| 定陶县| 浦东新区| 云霄县| 哈巴河县| 尉犁县| 肇源县| 大姚县| 广灵县| 启东市| 镇安县| 密山市| 鸡泽县| 安多县| 牟定县| 衡阳县| 拉孜县| 澄江县| 南岸区|