六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

asp組件上傳

[摘要]ASP 組件 FILE對象   當前,基于瀏覽器/服務器模式的應用比較流行。當用戶需要將文件傳輸到服務器上時,常用方法之一是運行FTP服務器并將每個用戶的FTP默認目錄設為用戶的Web主目錄,這樣用戶就能運行FTP客戶程序并上傳文件到指定的 Web目錄。這就要求用戶必須懂得如何使用FTP客戶程序。...
ASP 組件 FILE對象

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

  一.通過HTTP上傳的三種機制

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

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

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

  RFC1867 (http://www.ietf.org/rfc/rfc1867.txt) 最終被W3C在HTML3.2中接受前,是作為一種建議標準。它是一種非常簡單但是功能很強大的想法:在表單字段中定義一個新類型。

<INPUT TYPE="FILE">

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

<FORM ACTION="formproc.asp" METHOD="POST">

  而是使用:

<FORM ACTION="formproc.asp" METHOD="POST" ENCTYPE="multipart/form-data">

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

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

  在實際應用中,微軟免費提供了Posting Acceptor 。ASP不懂"multipart/form-data" 編碼方案。取而代之,微軟提供了Posting Acceptor ,Posting Acceptor是一種在上傳完成后,接受REPOST到一個ASP頁的ISAPI應用程序。

  Software Artisans的SA-FileUp是最早的商業Active Server組件之一。幾經改進,現在作為一個純粹的ASP組件存在。

        二.基于ASP的文件上傳實現原理分析

  基本原理是:采用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出,從中截取出所需的文件數據,以二進制文件方式存盤。

  下面是上傳文件頁面的一個例子(upload.htm):

<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>

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

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)
FormData就是文件的內容了。

  中間根據需要,可進行相應的處理。最后的工作就是將文件保存了。保存的方法可以有兩種:一種是利用VB或VC之類程序中的二進制文件操作方法,在工程中加入適當的類型庫,最終編譯成DLL文件,使用時再將該DLL文件注冊就可以了。文件存貯程序如下:

Public Function SaveFile(Pathname As String) As String
    Dim objContext As ObjectContext
    Dim objRequest As Request
 Set objContext=GetObjectContext()
    Set objRequest=objContext("Request")
    '以下的一段代碼是進行文件存貯的有關操作
 Dim FormData() As Byte,CLStr,DivStr
    Dim DataStart As Long,DataSize As Long
    DataSize=objRequest.TotalBytes
    Redim FormData(DataSize-1)
    FormData=objRequest.BinaryRead(DataSize)
    CLStr=ChrB(13) & ChrB(10)
    DataStart=InStrB(FormData,CLStr & CLStr)+4
    DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
    DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
    FormData=MidB(FormData,DataStart,DataSize)
    '創建一個二進制文件并將FormData寫入其中
    Open Pathname For Binary As 1
    Put #1,,FormData
    Close #1
    SaveFile="OK!"
   End Function

  第二種方法是利用ADO STREAM中提供的二進制文件操作方法來完成,保存文件的語句是: StreamOBJ.SaveToFile (fileName,2)。在 這種操作中,我們可以將有關的操作存放在一個類文件中,在應用時,直接將該類文件包含在ASP程序中就可以了。





標簽:asp組件上傳 
主站蜘蛛池模板: 欧日韩不卡在线视频 | 日韩中文字幕一区 | 婷婷六月天激情 | 欧美一级网 | 色天使色婷婷在线影院亚洲 | 欧美一区二区三区精品影视 | 三级黄色免费片 | 欧美一级黄色录像片 | 日本高清色www | 三级黄色片在线免费观看 | 影音先锋久久 | 日日噜噜夜夜狠狠视频欧美人 | 在线观看亚洲免费 | 四虎在线观看 | 色狠狠婷婷97 | 青娱乐在线免费视频 | 色综合啪啪 | 天天看夜夜操 | 日韩丝袜亚洲国产欧美一区 | 亚洲九九香蕉 | 亚洲人与牲动交xxxxbbbb | 欧洲性开放大片免费观看视频 | 天堂网2014av| 色婷婷天天综合在线 | 亚洲国产高清在线 | 日本免费色网站 | 日本一道高清不卡免费 | 午夜小影院 | 泰剧不期而爱第三季免费全集观看 | 午夜精品久久久久久久四虎 | 日本不卡高清免费v | 小明永久2015www永久免费观看 | 中文字幕天堂最新版在线网 | 青青草精品视频 | 亚洲精品第一页 | 日本高清免费中文在线看 | 日黄网站| 日韩欧美黄色大片 | 最近新的免费韩国视频 | 欧美一区二区三区久久综 | 中文在线免费不卡视频 |