久久一区激情,国产在线久久久,成人看片网站,国产香蕉一区二区三区在线视频

win7系統(tǒng)下載
當(dāng)前位置: 首頁 > xp系統(tǒng)教程 > 詳細(xì)頁面

結(jié)合案例區(qū)分ASP文件上傳原理

發(fā)布時(shí)間:2021-10-27 文章來源:xp下載站 瀏覽:

Windows XP是美國微軟公司研發(fā)的基于X86、X64架構(gòu)的PC和平板電腦使用的操作系統(tǒng),于2001年8月24日發(fā)布RTM版本,并于2001年10月25日開始零售。其名字中“XP”的意思來自英文中的“體驗(yàn)(Experience)”。該系統(tǒng)是繼Windows 2000及Windows ME之后的下一代Windows操作系統(tǒng),也是微軟首個(gè)面向消費(fèi)者且使用Windows NT5.1架構(gòu)的操作系統(tǒng)。

  一直以來,由于FileSystemObject的局限,所以ASP最大的難題就是文件上傳,大多解決法就是安裝第三方上傳組件。可第三方組件有很多問題,有的組件要注冊,有的組件要在表單中加上他的版權(quán)信息。據(jù)了解,在HTTP中上傳文件有三種機(jī)制:RFC1867,PUT和WebDAV。常用的實(shí)現(xiàn)方法是利用在RFC1867中引入的一個(gè)新類型:File以及ADO Stream對象。本文對上述上傳方法及實(shí)現(xiàn)原理作了論述,并給出了具體解決實(shí)例。

  ASP FILE對象

  當(dāng)前,基于/模式的應(yīng)用比較流行。當(dāng)用戶需要將文件傳輸?shù)缴蠒r(shí),常用方法之一是運(yùn)行FTP并將每個(gè)用戶的FTP默認(rèn)目錄設(shè)為用戶的Web主目錄,這樣用戶就能運(yùn)行FTP客戶程序并上傳文件到指定的 Web目錄。這就要求用戶必須懂得如何使用FTP客戶程序。因此,這種解決方案僅對熟悉FTP且富有經(jīng)驗(yàn)的用戶來說是可行的。 如果我們能把文件上傳功能與Web集成,使用戶僅用Web就能完成上傳任務(wù),這對于他們來說將是非常方便的。但是,一直以來,由于File System Object的僅能傳送文本文件的局限,所以ASP最大的難題就是文件上傳問題。下面介紹的就是如何在基于HTTP協(xié)議的網(wǎng)頁中實(shí)現(xiàn)文件的上傳。

  一.通過HTTP上傳的三種機(jī)制

  通過HTTP上傳有三種機(jī)制:RFC1867, PUT 和 WebDAV。

  PUT 是在HTTP 1.1引入了一個(gè)新的HTTP動(dòng)詞。當(dāng)web收到一個(gè)HTTP PUT和對象名字,它將會(huì)驗(yàn)證用戶,接收HTTP流的內(nèi)容,并把它直接存入web。由于這可能會(huì)對一個(gè)web站點(diǎn)造成破壞,并且還會(huì)失去HTTP最大的優(yōu)勢:可編程性。在PUT的情況下,自己處理請求:沒有空間讓CGI或者ASP應(yīng)用程序介入。唯一讓你的應(yīng)用程序捕獲PUT的方法是在低層操作,ISAPI過濾層。由于相應(yīng)的原因,PUT的應(yīng)用很有限。

  而WebDAV允許web內(nèi)容的分布式認(rèn)證與翻譯。它引入了幾種新的HTTP動(dòng)詞,允許通過HTTP上傳,鎖定/解鎖,登記/檢驗(yàn)web內(nèi)容。Office 2000中的"Save to web" 就是通過WebDAV來實(shí)現(xiàn)的。如果你所感興趣的一切都是上傳內(nèi)容,WebDAV應(yīng)用得非常出色,它解決了很多問題。 然而,如果你需要在你的web應(yīng)用程序里面上傳文件,WebDAV對你就毫無用處可言。象HTTP PUT一樣,那些WebDAV的動(dòng)詞是被解釋的,而不是web應(yīng)用程序。你需要工作在ISAPI過濾層來訪問WebDAV的這些動(dòng)詞,并在你的應(yīng)用程序中解釋內(nèi)容。

  RFC1867 最終被W3C在HTML3.2中接受前,是作為一種建議標(biāo)準(zhǔn)。它是一種非常簡單但是功能很強(qiáng)大的想法:在表單字段中定義一個(gè)新類型。

  并且在表單本身加入了不同的編碼方案,不再使用典型的:

  而是使用:

  這種編碼方案在傳送大量數(shù)據(jù)的時(shí)候,比起缺省的"application/x-url-encoded"表單編碼方案,顯得效率要高得多。URL編碼只有很有限的字符集,使用任何超出字符集的字符,必須用'%nn'代替,這里的nn表示相應(yīng)的2個(gè)十六進(jìn)制數(shù)字。例如,即使是普通的空格字符也要用'%20'代替。而RFC1867使用多部分MIME編碼,就象通常在e-mail消息中看到的那樣,不編碼來傳送大量數(shù)據(jù),而只是在數(shù)據(jù)周圍加上很少的簡單但實(shí)用的頭部。主要的廠商都采用了建議的"瀏覽..."按鈕,用戶能很容易的使用本地"打開文件..." 對話框選擇要上傳的文件。

  RFC1867仍然將大多數(shù)文件上傳的靈活方法留給了你的web應(yīng)用程序。PUT用得很有限。WebDAV對內(nèi)容的作者很有用,比如FrontPage用戶,但是對想在web應(yīng)用程序中加入文件上傳的web開發(fā)者來說很少用到。因此,RFC1867是在web應(yīng)用程序中加入文件上傳的最好的辦法。

  在實(shí)際應(yīng)用中,免費(fèi)提供了Posting Acceptor 。ASP不懂"multipart/form-data" 編碼方案。取而代之,提供了Posting Acceptor ,Posting Acceptor是一種在上傳完成后,接受REPOST到一個(gè)ASP頁的ISAPI應(yīng)用程序。Software Artisans的SA-FileUp是最早的商業(yè)Active Server之一。幾經(jīng)改進(jìn),現(xiàn)在作為一個(gè)純粹的ASP存在。

  二.基于ASP的文件上傳實(shí)現(xiàn)原理分析

  基本原理是:采用ADO Stream對象的BinaryRead方法將FORM中的所有數(shù)據(jù)讀出,從中截取出所需的文件數(shù)據(jù),以二進(jìn)制文件方式存盤。下面是上傳文件頁面的一個(gè)例子(upload.htm):

  程序中使用了文件對象,這樣在Upload.asp中采用BinaryRead方法讀來的原始數(shù)據(jù)就不僅僅是選擇的文件本身的數(shù)據(jù),還包含該文件在用戶硬盤上的路徑、類型、提交頁面的表單等相關(guān)信息的描述,這樣我們就需從中提取出文件的具體內(nèi)容。根據(jù)分析,數(shù)據(jù)的頭部信息與數(shù)據(jù)的分界線是兩對回車換行符,尾部也有分隔信息,我們可以采用類似以下的方法獲取文件數(shù)據(jù)。

  Dim FormData.FormSize,DataStart,CLStr,DivStr FormSize=Request.TotalBytes FormData=Request.BinaryRead(FormSize) CLStr=ChrB(13)&ChrB(10) DataStart=InStrB(FormData.CLStr&CLStr)+4 '4是兩對回車換行符的長度 DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1) DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2 FormData=MidB(FormData,DataStart,DataSize)

Windows XP服役時(shí)間長達(dá)13年,產(chǎn)生的經(jīng)濟(jì)價(jià)值也較高。2014年4月8日,微軟終止對該系統(tǒng)的技術(shù)支持,但在此之后仍在一些重大計(jì)算機(jī)安全事件中對該系統(tǒng)發(fā)布了補(bǔ)丁。

主站蜘蛛池模板: 石首市| 三门县| 新乡县| 伊金霍洛旗| 沾化县| 佛学| 鹰潭市| 五河县| 上饶市| 商河县| 铁岭县| 嘉义市| 宜州市| 龙江县| 融水| 聂拉木县| 荥阳市| 阳春市| 昌江| 亚东县| 文成县| 鹤峰县| 鲜城| 文水县| 六安市| 栾川县| 广宗县| 庆城县| 容城县| 江孜县| 贵定县| 胶南市| 兴城市| 全州县| 阿荣旗| 萍乡市| 德钦县| 郎溪县| 曲阜市| 乐陵市| 聂拉木县|