深入研究“用ASP上載文件”(一)
發(fā)表時間:2024-06-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]現(xiàn)在“瘦客戶”的觀點已經(jīng)是一個神話了,但隨著電視或掌上型瀏覽器的繁榮,這一狀況會有所改變。今天絕大多數(shù)的網(wǎng)絡(luò)客戶仍使用功能強(qiáng)大的PC,附著著大量的客戶端存儲器和客戶端感興趣的內(nèi)容。在Internet協(xié)議下,將文件傳遞到中央服務(wù)器有一些方法可供選擇,但基于WEB的文件上載比其它方法都要高級。下面來檢...
現(xiàn)在“瘦客戶”的觀點已經(jīng)是一個神話了,但隨著電視或掌上型瀏覽器的繁榮,這一狀況會有所改變。今天絕大多數(shù)的網(wǎng)絡(luò)客戶仍使用功能強(qiáng)大的PC,附著著大量的客戶端存儲器和客戶端感興趣的內(nèi)容。在Internet協(xié)議下,將文件傳遞到中央服務(wù)器有一些方法可供選擇,但基于WEB的文件上載比其它方法都要高級。下面來檢驗這一點。
一、HTTP與FTP的方式比較
為什么要上載?
文件上載對任何網(wǎng)絡(luò)應(yīng)用程序來說都起到重要作用。這里有一些例子,是關(guān)于我們的一些客戶如何把文件上載并他們的WEB應(yīng)用程序結(jié)合起來的:
1、基于WEB的e-mail形式,用文件上載給郵件信息增加附件
2、外部互聯(lián)網(wǎng)應(yīng)用程序用文件上載在伙伴間傳送文件,如協(xié)議證明、軟件更新或文件
3、技術(shù)支持站點用文件上載從用戶中接收錯誤記錄和有問題文件
4、企業(yè)內(nèi)部互聯(lián)網(wǎng)的文獻(xiàn)出版用友好的網(wǎng)絡(luò)接口在用戶間分享文件
5、圖形庫用文件上載控制提交、產(chǎn)生略圖
6、ISP主機(jī)店面用文件上載發(fā)送產(chǎn)品圖象
HTTP與FTP的方式比較
在TCP/IP的早期,F(xiàn)TP是向服務(wù)器傳輸文件的標(biāo)準(zhǔn)機(jī)制。它可靠、可接受文本和二進(jìn)制格式,客戶可以在任何地方執(zhí)行,但是它遠(yuǎn)遠(yuǎn)不及HTTP的適應(yīng)性強(qiáng)。下面來比較一下:
■ 可靠性:用FTP上載,要么管理大量的用戶帳號,要么就允許匿名訪問。用WEB應(yīng)用程序上載,應(yīng)用程序可以確定允許誰上載,免除了極大的管理負(fù)擔(dān)。
■ 安全性:通過HTTP上載可用SSL編碼,這樣一來信息可以在傳輸過程中加密。用FTP就無法作到。
■ 配置難易:FTP上載要求管理員精確地調(diào)節(jié)NTFS許可。用基于HTTP的上載和應(yīng)用程序,管理員和應(yīng)用程序都可以決定,如果需要的話。
■ 適應(yīng)性:你想在一個地方存儲DOC文件,在另一處存儲圖形嗎?使用FTP的話,用戶必須知道這些存儲路徑。而在WEB應(yīng)用程序中,你可以自行控制,不用打擾用戶就可以進(jìn)行修改。
■ 能力:用WEB應(yīng)用程序,每次調(diào)用都可以動態(tài)地控制上載文件的大小,甚至可以根據(jù)同一個表單中的信息改變大小。另外還可以沖掉符合一定標(biāo)準(zhǔn)的上載文件,如錯誤的MIME類型或文件類型。
■ 界面的簡易友好性:招人喜歡的網(wǎng)頁可以提供指導(dǎo)、建議、在線幫助,而基于批處理的FTP是不可能作到的。更重要的是發(fā)生錯誤時,WEB方式可以立刻向用戶提供反饋并作出糾正。
■ 防火墻支持:出于安全和知識產(chǎn)權(quán)方面的考慮,許多機(jī)構(gòu)不允許外部的FTP。通過簡單的配置,大多數(shù)防火墻都支持HTTP。
■ 補(bǔ)充信息:一個HTTP上載(用RFC1867)還提供其它可用信息,例如用戶的原始文件名,這在內(nèi)部互聯(lián)網(wǎng)環(huán)境下特別有用。
■ 上載到一個數(shù)據(jù)庫:利用服務(wù)器端組件,如SA-FileUp,允許上載到OLE DB數(shù)據(jù)庫。但用FTP,卻絕對做不到這點!
■ 性能:FTP和HTTP最終都是用TCP協(xié)議,這是決定傳輸性能的決定因素。
■ 可靠性及重新上載:FTP和HTTP 1.1都允許傳輸重新啟動。不幸地是許多服務(wù)器包括IIS,現(xiàn)在都不能支持任意一種協(xié)議的重新上載功能。FTP的重新上載功能將在IIS5版本中實現(xiàn)。
總之,同WEB本身一樣,服務(wù)器的可編程性使HTTP上載比FTP具有極大的優(yōu)勢。
HTTP上載格式
通過HTTP上載有三種文件機(jī)制,它們是RFC1867、PUT和WebDAV。
HTTP上載方法1:RFC1867
HTML 3.2最終推出W3C之前的一段時期,RFC1867 (http://info.internet.isi.edu/in-notes/rfc/files/rfc1867.txt) 是IETF的建議標(biāo)準(zhǔn)。首先是Netscape在Navigator 2.0中運(yùn)行,跟著Microsoft 把它作為IE 3.02 (32-bit) 的附加和IE 3.03 (16-bit)的自帶內(nèi)容。它是一個非常簡單但又很強(qiáng)大的概念:定義一個格式域的新類型
< INPUT TYPE= "FILE" >
然后向表單中填加不同的編碼方案:
< FORM ACTION="formproc.asp" METHOD="POST" ENCTYPE="multipart/form-data" >
而不是用典型的:
< FORM ACTION="formproc.asp" METHOD= "POST" >
在傳輸大量數(shù)據(jù)時,這種編碼方案比默認(rèn)的"application/x-url-encoded"格式編碼方案效率高。正如你也許知道的,URL可用的字符集是很有限的。任何超出范圍的字符集都要用'%nn'來代替,在這里nn是相應(yīng)的兩位十六進(jìn)制數(shù)。即使是最常用的空格字符也要用'%20'來代替。如果瀏覽器不得不用效率如此低的編碼方法對整個文件進(jìn)行編碼,那么上載文件的傳輸規(guī)模有可能比原始文件大2到3倍。而RFC1867用Multipart MIME編碼,就象通常在e-mail信息中所見到的,在傳輸大量數(shù)據(jù)時不用編碼,而只是在數(shù)據(jù)周圍有幾個簡單有用的頭。
結(jié)果看起來就象一個規(guī)則的HTML POST表單,實現(xiàn)上,通過4 KB的表單格式,代表的數(shù)據(jù)可以是幾兆字節(jié)。RFC1867還提出了一些有待被瀏覽器提供者采納的建議,即TYPE="FILE"語句的一些屬性。其中包括:
ACCEPT(接受):接收文件之前允許網(wǎng)站限制將要上載的文件類型。
SIZE(大小):設(shè)置單個文件名文本框的大小或允許多個文件使用單個< INPUT > 語句。
MAXLENGTH(長度最大值):在客戶端設(shè)置的上載文件的最大規(guī)模。
通配符和上載路徑:雖然RFC有此建議,但I(xiàn)E和 Navigator都不支持通配符和路徑上載。
好在兩種瀏覽器都支持"Browse..."按鈕,用戶可以用"Open File..."對話框很容易地選出即將上載的文件。
VALUE子句的使用很有趣。為了用戶方便,可以讓W(xué)EB預(yù)先設(shè)置表單域的值。但是在這種情況下,它使一些不良網(wǎng)站可以預(yù)設(shè)上載文件名,加上一個客戶端提交的表單,就可不經(jīng)用戶許可而從他們的PC上盜竊文件。1997年夏天,CERT和Bell實驗室的一名雇員一起對此發(fā)出了安全警告,Netscape和 Microsoft很快就發(fā)行了防止預(yù)設(shè)上載文件的補(bǔ)丁程序。
最初的RFC1867明確規(guī)定:“在用戶沒有明確要求的情況下,代理不得向其傳送任何文件,這一點很重要!彼詾g覽器本可以只是簡單地發(fā)出一個警告對話框,例如“你想向服務(wù)器傳送文件x, y, z嗎?”,而不用完全禁止預(yù)設(shè)文件名。但是,在IE4.01中出現(xiàn)了一個安全空洞,使網(wǎng)站可以饒過IE現(xiàn)有的安全機(jī)制。(見http://www.microsoft.com/windows/ie/security/paste.htm)
HTTP上載方法2:HTTP PUT
HTTP 1.1 介紹了一個新的HTTP動詞:PUT。當(dāng)網(wǎng)絡(luò)服務(wù)器收到了一個HTTP PUT 且對象名為("/myweb/image/x.gif"), 它要鑒別用戶,取HTTP流的內(nèi)容并直接存儲 到網(wǎng)絡(luò)服務(wù)器。這種方法會給網(wǎng)絡(luò)帶來很大的破壞,因此不常使用。而且它將HTTP 最大的優(yōu)勢---服務(wù)器可編程性放棄了。在使用PUT的情況下,由WEB服務(wù)器自身處理請求,沒有CGI或ASP應(yīng)用程序介入的空間。應(yīng)用程序捕捉PUT的唯一方法是在低水平、ISAPI水平上操作。由于各種原因,大多數(shù)網(wǎng)絡(luò)開發(fā)人員對此沒有興趣。
HTTP上載方法3:WebDAV
WebDAV (http://www.ietf.org/html.charters/webdav-charter.html) 允許網(wǎng)絡(luò)內(nèi)容的分布式授權(quán)和發(fā)布。它引入幾個動詞,可以對HTTP內(nèi)容上載、鎖定/開鎖、進(jìn)入/退出。我們可以把它看作一個非特有的配置管理(如來源安全)外加網(wǎng)絡(luò)文件傳輸。Microsoft已經(jīng)公開宣布IIS5、Office 2000 及未來IE版本都將支持它。ISP們很愿意把它來取代那些低級、易出故障的FrontPage服務(wù)器附加部分的機(jī)制。要注意的是它并不是取代FrontPage服務(wù)器附加部分,它只是簡單地提供低級標(biāo)準(zhǔn)服務(wù)來支持服務(wù)器附加部分正在進(jìn)行的更復(fù)雜的功能。在98年10月的PDC,你能看到Office 2000通過WebDAV完成了“保存到網(wǎng)絡(luò)”("Save to web" )這樣漂亮的任務(wù)。
聽起來很棒,是不是?如果你想上載內(nèi)容,WebDAV是很好的,它可以解決許多問題。但如果你想在網(wǎng)絡(luò)應(yīng)用程序內(nèi)上載文件,WebDAV就無能為力了。同HTTP PUT一樣, WebDAV這個動詞是由服務(wù)器而不是應(yīng)用程序來解釋的,需要在ISAPI過濾器水平上使用WebDAV動作,并在應(yīng)用程序中解釋內(nèi)容。
HTTP上載機(jī)制:總結(jié)
在WEB應(yīng)用程序上載文件時,RFC1867仍然是最靈活的方法。PUT的用途很有限,WebDAV對內(nèi)容作者,如FrontPage的用戶來說很好,但是,它對于那些想往WEB應(yīng)用程序上增加文件上載的網(wǎng)絡(luò)開發(fā)人員來說,它能做的很少。
(出處:熱點網(wǎng)絡(luò))