国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

趙學(xué)孔 龍世榮

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

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

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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)大的類庫(kù)而成為開發(fā)動(dòng)態(tài)Web程序的主流技術(shù)之一,利用它可以開發(fā)各種桌面軟件或Web系統(tǒng)。大文件上傳是許多系統(tǒng)開發(fā)中經(jīng)常使用的功能模塊,尤其對(duì)于一些視頻網(wǎng)站而言,往往需要上傳超大視頻文件。然而ASP.NET內(nèi)置的FileUpload控件對(duì)上傳大文件有限制,其影響了用戶體驗(yàn)度。為此,探究基于ASP.NET的大文件上傳具有現(xiàn)實(shí)意義。

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

ASP.NET是微軟公司提出的一種專用于開發(fā)桌面軟件或動(dòng)態(tài)Web網(wǎng)頁程序的技術(shù),具有簡(jiǎn)便易用的特點(diǎn)[1]。FileUpload是ASP.NET中經(jīng)常用到的上傳文件控件,其主要功能是向服務(wù)器指定的目錄上傳文件。FileUpload控件具有如下優(yōu)點(diǎn):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在實(shí)際應(yīng)用過程中也暴露出了一些問題:1)不適合大文件上傳,默認(rèn)情況下上傳的文件僅限于4M以內(nèi);2)不具有文件上傳進(jìn)度條,用戶體驗(yàn)度不高。為此,眾多系統(tǒng)開發(fā)者選擇了自己開發(fā)控件或借助第三方開源免費(fèi)組件的方式來上傳大文件。

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

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

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

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

2.2 上傳組件介紹

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

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

2.3.1 添加RadUpload組件引用

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

1)在前臺(tái)Aspx文件頭部分別添加:

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

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

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

2.3.2 編輯Web配置文件

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

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

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

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

配置好以上參數(shù)后即可開始編寫服務(wù)器端腳本??蛻魴C(jī)中的文件上傳是通過調(diào)用服務(wù)器端FileUpload控件中的Button按鈕事件來實(shí)現(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ù)庫(kù)插入新記錄

}

}

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

筆者曾參與多項(xiàng)大型系統(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ā)、大文件上傳的基本需求,可以滿足廣大教師同時(shí)上傳課堂錄像文件(詳見下圖1)。實(shí)踐結(jié)果表明,利用以上解決方案可以上傳超過2G的視頻文件,且系統(tǒng)運(yùn)行穩(wěn)定。

4 結(jié)束語

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

參考文獻(xiàn):

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

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

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