adodb Stream 详细用法

组件:"Adodb.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
  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()
 说明:
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将以二进制方式保存在数据库中的文件保存到硬盘
内容: 用Adodb.Stream将以二进制方式保存在数据库中的文件保存到硬盘

对于上传的数据库中的文件有的时候需要保存成硬盘上的文件,下面的代码以ACCESS数据库为例,演示怎样通过Adodb.Stream将文件保存到硬盘 

表:Demo的结构 
======================================= 
id: 自动编号 
filename:文本 
data: OLE 对象 

代码 
======================================= 

以下是引用片段:
<% 
Dim Conn,ConnStr,Rs,Sql,MyStream 

ConnStr="DBQ=" + Server.Mappath("Demo.mdb") + ";DRIVER={Microsoft Access Driver (*.mdb)};" 

Set Conn = Server.CreateObject("Adodb.Connection") 

Conn.Open ConnStr 

Sql = "select * from demo where id=1" 

Set Rs = Server.CreateObject("Adodb.RecordSet") 

Rs.Open Sql,Conn,1,3 

Set MyStream=Server.CreateObject("Adodb.Stream") 

MyStream.Type = 1 

MyStream.Open 

MyStream.Write Rs("data").GetChunk(rs("data").ActualSize-78) 

MyStream.SaveToFile "c:\" & Rs("fileName") 

Rs.Close 

Set Rs = Nothing 

Conn.Close 

Set Conn = Nothing 
%> 

利用ADODB.Stream对象将字节流转换为字符流
内容: ASP中利用ADODB.Stream对象将字节流转换为字符流 

以下是引用片段:
'--------------------------------------------------------------------
' 二进制转字符串
'
' 入口参数:字节流
' 函数返回:字符串
' Code By:Madpolice 2002-12-20
' 利用 ADODB.Stream 对象,速度比原来的字符替换法快了n倍,n≈30!!)
'--------------------------------------------------------------------
'下面的常量是函数用到的,因为我在函数外面已经定义过了,因此不在这里重复定义
'---- StreamTypeEnum Values ----
'Const adTypeBinary = 1
'Const adTypeText = 2

Function Bytes2bStr(vin)
 Dim BytesStream,StringReturn

 Set BytesStream = Server.CreateObject("ADODB.Stream") '建立一个流对象
 With BytesStream
  .Type = adTypeText        '设置流对象的类型为字符流
  .Open                     '打开流对象
  .WriteText vin            '把vin写入流对象中

  .Position = 0             '设置流对象的起始位置是0,也就是开头
                            '这个操作必须做,为什么我也不知道,失败了n次得出的结论
          '如果不进行这个操作,下面设置Charset属性就出错
  .Charset = "GB2312"       '设置流对象的编码方式为GB2312
  .Position = 2             '设置流对象的起始位置是2(过滤掉开始的一个控制字符
          '这个控制字符是WriteText方法按默认属性Charset="Unicode"
          '读入数据的时候自动加到数据开头的,字符的值是FF3F
                            '这个控制字符占2字节,所以Position设置为2
          '表示略过2个字节,下面的ReadText方法从Position开始读数据
  StringReturn = .ReadText  '把流对象的内容保存在StringReturn变量中
  .close                    '关闭流对象
 End With
 Set BytesStream = Nothing     '销毁流对象

 Bytes2bStr = StringReturn

End Function
'--------------------------------------------------------------------

 

利用ADODB.Stream使用浏览器下载服务器文件
内容: download.asp?file=相对路径的文件
就可以把这个文件下载下来

以下是引用片段:
<%

 call downloadFile(replace(replace(Request("file"),"\",""),"/",""))

 Function downloadFile(strFile)
' make sure you are on the latest MDAC version for this to work
 ' -------------------------------------------------------------

' get full path of specified file
 strFilename = server.MapPath(strFile)

 ' clear the buffer
 Response.Buffer = True
 Response.Clear

'create stream
 Set s = Server.CreateObject("ADODB.Stream")
 s.Open

'Set as binary
 s.Type = 1

'load in the file
 on error resume next

' check the file exists
 Set fso = Server.CreateObject("Scripting.FileSystemObject")
 if not fso.FileExists(strFilename) then
 Response.Write("<h1>Error:</h1>" & strFilename & " does not exist<p>")
 Response.End
 end if

' get length of file
 Set f = fso.GetFile(strFilename)
 intFilelength = f.size

 s.LoadFromFile(strFilename)
 if err then
 Response.Write("<h1>Error: </h1>" & err.Description & "<p>")
 Response.End
 end if

' send the headers to the users browser
 Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
 Response.AddHeader "Content-Length", intFilelength
 Response.CharSet = "UTF-8"
 Response.ContentType = "application/octet-stream"

' output the file to the browser
 Response.BinaryWrite s.Read
 Response.Flush

 ' tidy up
 s.Close
 Set s = Nothing

 End Function

%> 

 

From:http://blog.cnknow.com/blogview.asp?logID=122

版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i495.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>