日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET大文件上傳方法淺析

使用過ASP.NET的開發(fā)者都知道,F(xiàn)ileUpload控件是一把雙刃劍——既可能成為我們的救世主,也能變成我們的敵人。其中一個(gè)很常見的問題就是如何處理超過4MB的大文件上傳。

微軟的ASP.NET MVP Jon Galloway最近發(fā)表了一篇文章,其中討論了FileUpload控件的種種使用技巧。了解了這些之后,我們即可在理論上處理任何大小的文件上傳。

允許ASP.NET大文件上傳

Jon提到,使用FileUpload控件進(jìn)行文件上傳是一件非常有技巧性的事情。開發(fā)者應(yīng)該了解的是,之所以默認(rèn)的文件大小上限為4MB,并不是因?yàn)楫?dāng)時(shí)的設(shè)計(jì)人員靈光一現(xiàn),而是為了避免潛在DOS攻擊危險(xiǎn)。

若是攻擊者提交了一個(gè)或多個(gè)大文件,往往會(huì)讓服務(wù)器不堪重負(fù)。若是用戶上傳的文件大于4MB,將會(huì)得到“Maximum request length exceeded.”異常信息。

想增加這個(gè)尺寸的上限并沒有什么難度,不過開發(fā)者需要知道怎樣做才是最好的方法。默認(rèn)的4MB設(shè)定于系統(tǒng)的machine.config文件中,不過我們在web.config中即可覆蓋該值。

例如,若想將上傳文件的上限提高至20MB,我們只需要這樣修改:

 
 
 
  1.   

若是在machine.config中對該值進(jìn)行了修改,那么同時(shí)受到影響的就不只是這一個(gè)網(wǎng)站。ASP.NET之所以設(shè)計(jì)了這樣的上限,就是為了避免潛 在的攻擊。所以最好的方式是在某個(gè)特定目錄中進(jìn)行覆蓋,而不是整個(gè)應(yīng)用程序。web.config文件的格式非常靈活,因此實(shí)現(xiàn)這樣的需求也不難:

web.config文件允許級(jí)聯(lián)覆蓋,所以很容易就能夠?qū)崿F(xiàn)這個(gè)要求。我們可以在某個(gè)文件夾中添加web.config文件,并書寫上述配置,或者干脆在web.config文件中添加一個(gè)專門的標(biāo)簽,也能達(dá)到同樣的效果:

 
 
 
  1.              
       

對于允許ASP.NET大文件上傳來說,改變默認(rèn)的上傳文件大小限制僅僅是我們要做的第一步。

若是ASP.NET大文件上傳的話,往往會(huì)出現(xiàn)一些很有意思的情況。無論maxRequestLength 在中設(shè)置成什么,IIS都會(huì)不假思索地接受,但隨后在ASP.NET檢查時(shí)就會(huì)拋出異常。

當(dāng)然很容易就可以捕獲到這個(gè)異常,不過這并不是我們所期待的。還有一種方法是覆寫Page.OnError方法,并通過檢查在發(fā)生HttpException異常時(shí)HTTP響應(yīng)代碼是否為400來判斷,不過這也不夠完美。

給用戶充分提示

一個(gè)讓用戶很反感的做法就是誤導(dǎo)用戶,而且在Web應(yīng)用程序執(zhí)行操作時(shí)也不給用戶任何提示。文件尺寸的限制寫在web.config中,所以將一段提示文字放在web.config中也就變成了件非常自然的事。

最好的做法就是在運(yùn)行時(shí)讀取web.config中的httpRuntime節(jié),并轉(zhuǎn)化為HttpRuntimeSection對象。

更好的解決方案

還有一些商用的解決方案供我們選擇。這些解決方案通過HttpHandler實(shí)現(xiàn),在通過進(jìn)度條給用戶充分提示的同時(shí),也讓我們開發(fā)人員能夠更好地控制文件大小以及上傳過程中可能出現(xiàn)的異常。

下面是一些常見的ASP.NET大文件上傳組件:

◆FileUploader.NET (MediaChase公司,$310以上)

◆RadUpload (Telerik公司,$249)

◆NeatUpload (免費(fèi),遵守LGPL協(xié)議)

文章建議,最好的解決方案是使用RIA,例如那些用ASP.NET和Silverlight編寫的上傳組件。

大多數(shù)情況下,我建議用給予Silverlight或Flash的上傳組件來替代傳統(tǒng)的FileUpload組件。這類組件不單單提供了更好的上傳體驗(yàn),也通常會(huì)比在頁面上生成的文本框和按鈕要漂亮一些。這個(gè)并不能夠通過CSS添加樣式,雖然總是有人嘗試去尋找一些方法。

雖然目前并沒有什么商業(yè)上傳組件使用了Silverlight,不過我們可以找到一個(gè)示例程序演示了用Silverlight進(jìn)行多文件上傳的方法。

哪怕是如同文件上傳一般微不足道的問題,我們都能夠找到很多種不同的方法來解決。而最大的挑戰(zhàn)在于分析各種不同做法的利弊,以及衡量用各個(gè)做法解決這個(gè)問題所要花費(fèi)的時(shí)間和金錢。只有仔細(xì)分析計(jì)劃之后,我們才能夠找到最適合項(xiàng)目中使用的方法。


網(wǎng)站名稱:ASP.NET大文件上傳方法淺析
文章鏈接:http://www.5511xx.com/article/dhjgjhd.html