Adodb.Stream 对象

通过 Adodb.Stream 可以把数据库的二进制内容写到硬盘上,也可以代替 FSO 读取文件。

set str = Server.CreateObject("Adodb.Stream")

Stream 对象

属性/方法 意义
Cancel() 取消执行挂起的异步 Execute 或 Open 方法的调用
Close() 关闭对象
CopyTo(destStream,[CharNumber]) 将对象的数据复制,destStream指向要复制的对象,
CharNumber为可选参数,指要复制的字节数,不选为全部复制。
Flush()  
LoadFromFile(FileName) 将FileName指定的文件装入对象中,参数FileName为指定的用户名
Open(Source,[Mode],[Options],[UserName],[Password]) 打开对象,Sourece 对象源,UserName 用户名,Password 密码
Read([Numbytes]) 读取指定长度的二进制内容
ReadText([NumChars]) 读取指定长度的文本
SaveToFile(FileName,[Options]) 将对象的内容写到FileName指定的文件中,Option:
adSaveCreateNotExist =1,
adSaveCreateOverWrite =2
setEOS()  
SkipLine()  
Write(Buffer) 将指定的数据装入对象中
WriteText(Data,[Options]) 将指定的文本数据装入对象中,Options:
adWriteChar =0, adWriteLine =1
Charset  
EOS  
LineSeparator adCR =13,adCRLF =-1,adLF =10
Mode 指定或返回模式
Size 对象内数据的大小
State 返加对象状态是否打开
Type 指定或返回的数据类型:
adTypeBinary =1,adTypeText =2
Position 指定或返回对象内数据的当前指针

Mode 常量

属性/方法 意义
adModeRead  1
adModeReadWrite  3 读写
adModeRecursive  4194304  
adModeShareDenyNone  16  
adModeShareDenyRead  4  
adModeShareDenyWrite  8  
adModeShareExclusive  12  
adModeUnknown  0  
adModeWrite  2

Option 常量

属性/方法 意义
adOpenStreamAsync  1  
adOpenStreamFromRecord 4  
adOpenStreamUnspecified -1  

示例:数据库数据存入文件

set cn=connectmssql()

set rec=cn.execute ("select top 1 * from files")

set stm = server.createobject("adodb.stream")

stm.mode=3

stm.type=1

stm.open

stm.write rec("内容").getchunk(rec("尺寸"))

stm.savetofile "c:\" & rec("文件名"),2

示例:读取并返回一个文件

sub readfileTest(URL)
      set srmObj = server.CreateObject("Adodb.Stream")
      srmObj.type=1                 ' 二进制
      srmObj.mode=3                 ' 读写
      srmObj.open                   ' 打开 
      srmObj.LoadFromFile URL       ' 载入文件内容
      srmObj.Position = 0           ' 设置指针位置
      indexcontent = srmObj.read()  ' 读出内容
      srmObj.close                  ' 关闭
      response.contenttype = "Microsoft Word 应用程序"   ' 设置输出格式为 WORD
      response.addheader "Content-Disposition","inline; filename=a.doc"  ' 设置在浏览器打开
      response.binarywrite indexcontent                 ' 输出文件内容
end sub