程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> Adodb.Stream介紹

Adodb.Stream介紹

編輯:關於ASP編程
 

Adodb.Stream是ADO的Stream對象,提供存取二進制數據或者文本流,從而實現對流的讀、寫和管理等操作.

有下列方法:
Cancel 方法
使用方法如下
Object.Cancel
說明:取消執行掛起的異步 Execute 或 Open 方法的調用。
Close 方法
使用方法如下
Object.Close
:關閉對像
CopyTo 方法
使用方法如下
Object.CopyTo(destStream,[CharNumber])
說明:將對像的數據復制,destStream指向要復制的對像,CharNumber為可選參數,指要復制的字節數,不選為全部復制。
Flush 方法
使用方法如下
Object.Flush
說明:
LoadFromFile 方法
使用方法如下
Object.LoadFromFile(FileName)
說明:將FileName指定的文件裝入對像中,參數FileName為指定的用戶名。
Open 方法
使用方法如下
Object.Open(Source,[Mode],[Options],[UserName],[Password])
說明:打開對像,
參數說明:Sourece 對像源,可不指定
Mode 指定打開模式,可不指定,可選參數如下:
adModeRead =1
adModeReadWrite =3
adModeRecursive =4194304
adModeShareDenyNone =16
adModeShareDenyRead =4
adModeShareDenyWrite =8
adModeShareExclusive =12
adModeUnknown =0
adModeWrite =2

adModeUnknown:缺省。當前的許可權未設置

adModeRead:只讀

adModeWrite:只寫

adModeReadWrite:可以讀寫

adModeShareDenyRead:阻止其它Connection對象以讀權限打開連接

adModeShareDenyWrite:阻止其它Connection對象以寫權限打開連接

adModeShareExclusive:阻止其它Connection對象以讀寫權限打開連接

adModeShareDenyNone:阻止其它Connection對象以任何權限打開連接

Options 指定打開的選項,可不指定,可選參數如下:
adOpenStreamAsync =1
adOpenStreamFromRecord =4
adOpenStreamUnspecified=-1
UserName 指定用戶名,可不指定。
Password 指定用戶名的密碼


Read 方法
使用方法如下:
Object.Read(Numbytes)
說明:讀取指定長度的二進制內容。
參數說明:Numbytes指定的要讀取的找度,不指定則讀取全部。

ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
說明:讀取指定長度的文本
參數說明:NumChars指定的要讀取的找度,不指定則讀取全部。

SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
說明:將對像的內容寫到FileName指定的文件中
參數說明:FileName指定的文件


Options 存取的選項,可不指定,可選參數如下:
adSaveCreateNotExist =1 指定文件不存在則創建
adSaveCreateOverWrite =2 覆蓋

SetEOS 方法
使用方法如下:
Object.setEOS()
說明:返回對像內數據是否為空


SkipLine 方法
使用方法如下:
Object.SkipLine()
說明:在讀取textstream文件時跳過下一行


Write 方法
使用方法如下:
Object.Write(Buffer)
說明:將指定的數據裝入對像中。
參數說明:Buffer 為指定的要寫入的內容。


WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
說明:將指定的文本數據裝入對像中。
參數說明:Data 為指定的要寫入的內容。

Options 寫入的選項
,可不指定,可選參數如下:
adWriteChar =0
adWriteLine =1

有下列屬性:
Charset
EOS 返回對像內數據是否為空。

LineSeparator 指定換行格式,可選參數有
adCR =13
adCRLF =-1
adLF =10

Mode 指定或返加模式。

Position 指定或返加對像內數據的當前指針。

Size 返回對像內數據的大小。

State 返加對像狀態是否打開。

Type 指定或返回的數據類型,可選參數為:
adTypeBinary =1
adTypeText =2

例子:
adodb.stream 的使用地方很多 這裡ME只講一講使用 adodb.stream 組 替代 FSO 實現讀取文件的方法 --- 網上流行的一些無組件上傳程序全部基於這個寫成的 哈哈
因為直接講可能會使一大半人頭腦發暈 所以ME們在這裡先寫一個例子 看不明白不要緊 後面後一條一條的進行解釋
1 On Error Resume Next
2 Set stream=Server.CreateObject("Adodb.Stream")
3 If Err.Number=-2147221005 Then
4 Response.Write "<div align='center'>非常遺憾,您的主機不支持ADODB.Stream,不能使用本程序</div>"
5 Err.Clear
6 Response.End
7 End If
8 stream.type=2
9 stream.mode=3
10 stream.open
11 dim filepath
12 filepath="a.txt"
13 stream.LoadFromFile Server.Mappath(filepath)
14 If Err.Number<>0 Then
15 Response.Write "<div align='center'>文件<font color='#ff0000'>"&Filepath&"</font>無法被打開,請檢查是否存在!< /font></div>"
16 Err.Clear
17 Response.End
18 End If
19 stream.Charset="gb_2312"
20 stream.position=2
21 dim loadfile
22 loadfile=steam.readtext
23 stream.close
24 set stream=nothing
到這裡讀出的工作就完成了
下面來一句一句的解釋
第一句不要解釋了吧 會點英語的光看意思就知道了 就是 在遇到錯誤的時候假定到下一行 也就是如果錯誤不中斷程序從下一句繼續執行了
第二句 為 創建 stream 對象 3-7為進行錯誤判斷 可以不寫
8,9分別設置stream對象 返回 數據的類型和打開的模式
type屬性 設置 stream 對象返回的數據類型 有兩個值 1 返回二進制 2 返回文本
mode屬性 為打開模式 1.只讀 2.只寫 3.讀寫 還有一些其它的 這裡就不寫了
10 句 是打開對象 只有打開後 以後的方法如 loadFromFile才能使用
11,12,13是使用loadFromFile 將文件 a.txt 裡的內容 讀入 stream對象裡(注意是讀入這個對象中,並沒有另開一個變量空間)
14-18 一樣是錯誤判斷啊
19 Charset設置返回數據類型的編碼格式 這裡設的是 簡體中文
20 Position 設置文件讀取的當前指針位 也就是當前指向的是第幾個字符了
21,22使用readtext的方法將對象裡的內容(就是先前用LOADFROMFILE讀進來的內容)寫入loadfile變量
後面兩句是 關閉 和 銷毀 對象
當然這只是讀取
要想將其內容寫入一文件 可以使用 savetofile(filename,[adsavecreatenotexist|adsavecreateoverwrite])
要想往其內容裡寫入內容 可以使用 write(buffer) 和writetext(data,[adwritechar|adwriteline])
將一個對象的內容復制到另一個對象裡
Object.CopyTo(destStream,[CharNumber])
其中destStream為另一對象 charnumber 為要復制文件的大小 不設為全部 這個在上傳裡必須用到 啊 哈哈
好了 就寫到這裡了 希望給看到的人 並需要使用他的人 有點 幫助


///////////////////////////////////////////////////////////////////////////

目前有很多無組件上傳類,我大概看了一下,大多寫的相當復雜,有的居然還只能傳文本
最關鍵的是沒有10行代碼以下的 :)
我花了一個晚上時間研究了一下ADODB.Stream,並且用了6行代碼實現了無組件上傳:

strFileName = Request.QueryString("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server."123_onweb.gif",2

使用方法:

把上面的代碼寫成upload.asp
在浏覽器裡面輸入:
http://XXX/upload.asp?file1=c:\上傳文件\123.gif
XXX為你的主機地址
執行完後你會看到你的目錄下面多了一個123_onweb.gif
他就是你要文件拉!!!!

根據原理我們可以擴展以下代碼:
upload.asp文件
<%
Function GetFileName(ByVal strFile)
If strFile <> "" Then
GetFileName = mid(strFile,InStrRev(strFile, "\")+1)
Else
GetFileName = ""
End If
End function

strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
%>

upload.htm文件
<form name="FORM" action="upload.asp" method="post">
<input type="submit" name="submit" value="OK">
<input type="file" name="file1" style="width:400" value="">
</form>


前幾天要寫一個東西裡面有用到讀文件的。

可是我不想用FSO,我怕有的空間不支持。
可是網絡上找了半天沒有找到一個不是用FSO寫的。

還是自己做了一個。

我記得以前在做無組件上傳,並保存文件的時候有用到stream
我發現有一個LoadFromFile的方法。可以讀取文件。
下面是我的代碼。

function readfile(URL,chartype)
set srmObj = server.CreateObject("adodb.stream")
srmObj.type=1
srmObj.mode=3
srmObj.open
srmObj.Position=0
srmObj.LoadFromFile URL

srmObj.Position = 0
srmObj.type=2
srmObj.charset=chartype
readfile=srmObj.readtext()

end function

兩個參數。URL是文件的路徑,好像只能絕對路徑。chartype是文件以什麼編碼存放的。

返回一個字符串,存放文件的內容。

這個函數只能讀文本文件。讀二進制文件也差不多。要用的人可以自己改
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved