Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29308898
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2008-12-29 09:16:22

Adodb.Stream是ADO的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

讲一个实例操作一下看看:

内容: 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("

Error:

" & strFilename & " does not exist

")
 Response.End
 end if


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

 s.LoadFromFile(strFilename)
 if err then
 Response.Write("

Error: 

" & err.Description & "

")
 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

%> 

用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 
%> 
 


阅读(653) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~