為了方便用戶使用大文件上傳組件,特寫使用說明書,以指明調(diào)用組件的接口,操作流程和注意事項(xiàng)。
由于ASP.NET在上傳文件時(shí),是全部裝入服務(wù)器內(nèi)存,在上傳文件時(shí),消耗服務(wù)器資源較多,且不能提供上傳進(jìn)度顯示,由于消耗服務(wù)器資源較多,所以ASP.NET上傳文件時(shí)往往大小受到限制。此組件解決了所有這些問題
大文件:大文件主要意思是指大小不受限制,
Web.config:是ASP.NET的配置文件。
所有需要用ASP.NET上傳文件的地方,均可以使用本組件。本組件可以解除ASP.NET對(duì)上傳文件大小的限制,同時(shí)提供上傳進(jìn)度提示,用戶還可以選擇中斷上傳過程。減少對(duì)服務(wù)器資源的消耗(經(jīng)測(cè)試,服務(wù)器資源消耗與運(yùn)行普通ASP.NET頁面相差無幾)
大文件上傳處理模塊,用于在客戶端請(qǐng)求發(fā)送到服務(wù)器上后,分析請(qǐng)求內(nèi)容,如果是上傳文件,則在IIS將數(shù)據(jù)出發(fā)送到ASP.NET的管道中時(shí),讀取數(shù)據(jù),寫入文件,并重新組織請(qǐng)求內(nèi)容,重新組織的內(nèi)容是去掉了文件內(nèi)容的請(qǐng)求內(nèi)容。頁面在接收到請(qǐng)求后,除文件上傳控件不能讀取文件內(nèi)容外,其它組件的屬性可以正常訪問。
請(qǐng)求數(shù)據(jù)分析和文件寫入。
上傳文件屬性結(jié)構(gòu),供組件內(nèi)部使用。
文件上傳環(huán)境,組件在使用時(shí),主要使用此類。具體有以下方法和屬性:
UploadContext:構(gòu)造函數(shù),需傳入文件上傳頁面對(duì)象和文件臨時(shí)存放目錄。外部不能直接調(diào)用些構(gòu)造函數(shù),要構(gòu)建文件上傳環(huán)境,需調(diào)用UploadContextFactory的提供的靜態(tài)方法
TmepFileDir:獲取和設(shè)置上傳臨時(shí)文件存放路徑
FileNames上傳的文件名列表
TotalLength發(fā)送信息總長度,包括頁面所有控件請(qǐng)求內(nèi)容
Readedlength已接收的信息長度 包括面頁控件請(qǐng)求內(nèi)容
StartReadDateTime開始接收時(shí)間
FileConIds頁面文件上傳控件ID列表,對(duì)文件上傳控件在服務(wù)器端運(yùn)行時(shí),為控件的UniqueID
GUID:上傳文件唯一標(biāo)志
Abort :設(shè)置和讀取是否中斷上傳過程
Ratio上傳速率,返回每秒上傳的字節(jié)數(shù)
FormatRatio獲取格式化的上傳速度,以適當(dāng)?shù)淖止?jié),K字節(jié),M字節(jié)表示
LeftTime估計(jì)上傳剩余時(shí)間,以秒為單位
FormatLeftTime獲取格式上的上傳剩余時(shí)間,適當(dāng)?shù)囊孕r(shí),分鐘,秒表示
CurrentFile當(dāng)前正在處理的上傳文件
Status上傳狀態(tài)
FormatStatus 以字符串格式,返回當(dāng)前上傳操作的狀態(tài)
SaveFile另存上傳的數(shù)據(jù)文件,此方法主要將文件從臨時(shí)存放目錄移到用戶需要求的目錄,由于采取移動(dòng)文件辦法,所以此方法調(diào)用成功后,臨時(shí)文件對(duì)應(yīng)文件將被移走。
GetFileNameByControl根據(jù)頁面文件上傳控件名稱,獲取上傳的文件名
Dispose當(dāng)前上下文環(huán)境中接收的所有文件
GetFileName :根據(jù)文件上傳控件名稱,獲取對(duì)應(yīng)的上傳的文件。
創(chuàng)建和獲取文件上傳環(huán)境。
InitUploadContext(System.Web.UI.Page page,string TempFileDir)根據(jù)頁面對(duì)象和上傳文件臨時(shí)目錄文件夾,獲取一個(gè)文件上傳上下文類實(shí)例
GetUploadContext根據(jù)頁面發(fā)送的上傳會(huì)話編號(hào),獲取文件上傳上下文
GetUploadContext(string GUID)根據(jù)會(huì)話編號(hào)的GUID獲取文件上傳的上下文
Release在頁面邏輯處理完成后,釋放上傳上下文,并刪除臨時(shí)文件
uploadStatus:文件上傳狀態(tài)枚舉類
1、 將組件dll復(fù)制到應(yīng)用系統(tǒng)bin目錄,然后再VS.NET中引用本組件,
2、 在web.config增加ASP.NET處理模塊
<httpModules>
<add name="BigFileUploadModuleHandle " type="HelpSoft.BigFileUploadModuleHandle,BigFileUploadHandle" />
</httpModules>
3、 在要上傳文件的asp.net頁面的頁面裝入事件中或初始化事件中,初始化文件上傳環(huán)境,注冊(cè)文件上傳存放的臨時(shí)文件夾,如下面代碼:
private void Page_Load(object sender, System.EventArgs e)
{
UploadContext context = UploadContextFactory.InitUploadContext(this, @"c:" myupload"");
}
提示:A、文件存放目錄要求設(shè)置相應(yīng)的訪問權(quán)限,目錄必須存在
B、初始化上傳環(huán)境后,頁面須在一天內(nèi)發(fā)送文件。否則上傳環(huán)境失效。
C、初始化上傳環(huán)境時(shí),組件將在頁面內(nèi)注冊(cè)隱藏域,記錄上傳會(huì)話唯一標(biāo)志。隱藏域命名為UploadID,頁面不能有同名控件。
D、需要上傳文件表單編碼方式必須為multipart/form-data,(對(duì)于文件上傳控件作為服務(wù)器端控件運(yùn)行時(shí),系統(tǒng)會(huì)自動(dòng)加入此編碼方式,否則需用戶手工添加)
E、要使本上傳組件生效,必須在頁面訪問時(shí)初始化上傳環(huán)境,和設(shè)置表單編碼方式,反之,如不希望本組件對(duì)特定頁面生效,只可取消前兩條件之一。
4、 在文件上傳提交事件中,直接從上傳文件環(huán)境工廠類中獲取文件上傳環(huán)境,進(jìn)一步獲取上傳的文件信息。類似代碼如下:
UploadContext context = UploadContextFactory.GetUploadContext();
string FileName = context.GetFileNameByControl(resFile.UniqueID);
string filePath=@"c:"workdir";
if (context.SaveFile(resFile.UniqueID,filePath+FileName))
{
UploadContextFactory.Release();
}
提示:A、根據(jù)控件名獲取對(duì)應(yīng)的上傳文件信息時(shí),對(duì)服務(wù)器控件需要傳入控件唯一標(biāo)志,對(duì)非服務(wù)器控件,需傳入控件名稱。
B、對(duì)文件另存時(shí)的目錄訪問權(quán)限,是否存在、可用空間大小,由頁面調(diào)用者檢查處理。如此類型錯(cuò)誤發(fā)生,系統(tǒng)將引發(fā)對(duì)應(yīng)異常。
C、如沒找到控件對(duì)應(yīng)文件(可能是客戶端沒有指定文件或傳的控件標(biāo)志有誤)、臨時(shí)目錄中對(duì)應(yīng)文件也不存在(已成功調(diào)用過此方法,文件已被移走),本方法將返回假,操作成功后,方法返回真。
D、UploadContextFactory.Release()將從系統(tǒng)緩存中清除上傳環(huán)境對(duì)象,將不能用GetUploadContext方法獲取上傳環(huán)境,但已取得的上傳環(huán)境仍然可用。
5、 讀取文件上傳進(jìn)度時(shí),需另建一個(gè)ASPX頁面,讀取進(jìn)度主要是根據(jù)上傳文件的會(huì)話唯一標(biāo)志,從系統(tǒng)緩存中(通過GetUploadContext(string GUID)方法))獲取上傳文件環(huán)境,訪問此環(huán)境類,即可以獲取文件上傳開始時(shí)間、信息總長度、當(dāng)前已傳送信息長度、速度、估計(jì)剩余時(shí)間等信息。系統(tǒng)再使用定時(shí)刷新的辦法,不斷獲得上傳進(jìn)度信息,即可形成上傳進(jìn)度提示。
進(jìn)度顯示可以使用XML無回刷新方式,也可以使用頁面定時(shí)刷新方式。
6、 要在傳輸過程中,中斷傳輸入過程,只需用會(huì)話唯一標(biāo)志,獲取上傳環(huán)境,將一上傳環(huán)境的abort屬性設(shè)為真,系統(tǒng)將主動(dòng)與客戶端斷開連接,中斷上傳過程,同時(shí)頁面提交的其它數(shù)據(jù)也將取消。
聯(lián)系客服