关于Adodb.Stream 的使用说明

来源:互联网 发布:fgo日服石头号淘宝 编辑:程序博客网 时间:2024/05/21 16:23


关于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

用了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,有的空间不支持。

有一个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是文件以什么编码存放的。

返回一个字符串,存放文件的内容。

这个函数只能读文本文件。读二进制文件也差不多。要用的人可以自己改

< = src="/article/js/c9.js"> 基于adodb.stream的文件操作类

<%

’*************************************************************

’转发时请保留此声明信息,这段声明不并会影响你的速度!

’*************************************************************

’*************************************************************

’@版权申明:

’ 非盈利性质团体或者个人可以免费使用.

’*************************************************************

’*************************************************************

’ 类名称: files

’ 类功能: 实现文件读写功能,利用adodb.stream实现,在不支持fso的主机上也可以读写文件.

’*************************************************************

class files

private adSaveCreateOverWrite ’创建文件的时候可以覆盖已经存在的文件.

private adSaveCreateNotExist ’保存文件的时候如果文件不存在,可以创建文件.

’*************************************************************

’ 事件名称: Class_Initialize()

’ 事件发生条件: 类创建时候产生该事件

’ 事件内容: 给私有变量赋值

’ 事件传入参数: 无

’*************************************************************

sub Class_Initialize()

adSaveCreateOverWrite =2

adSaveCreateNotExist = 1

end sub

’*************************************************************

’ 函数名称: function readfile(filepath)

’ 函数内容: 读出文件

’ 传入参数: filepath:要读的文件的绝对路径

’ 返回参数: 要读的文件的内容.

’*************************************************************

function readfile(filepath)

on error resume next

dim stm2

set stm2 =server.createobject("ADODB.Stream")

stm2.Charset = "gb2312"

stm2.Open

stm2.LoadFromFile filepath

readfile = stm2.ReadText

end function

’*************************************************************

’ 函数名称: function writefile(filepath,str)

’ 函数内容: 写入文件

’ 传入参数: filepath:要读的文件的绝对路径

’ str: 要写入的内容

’ 返回参数: 无返回

’*************************************************************

function writefile(filepath,str)

on error resume next

Set stm = server.createobject("ADODB.Stream")

stm.Charset = "gb2312"

stm.Open

stm.WriteText str

stm.SaveToFile filepath, adSaveCreateOverWrite

end function

’*************************************************************

’ 函数名称: function copy(filepath_s,filepath_d)

’ 函数内容: 读出文件

’ 传入参数: filepath_d:目的文件的绝对路径

’ filepath_s:源文件路径

’*************************************************************

function copy(filepath_s,filepath_d)

on error resume next

dim stm2

set stm2 =server.createobject("ADODB.Stream")

stm2.Charset = "gb2312"

stm2.Open

stm2.LoadFromFile filepath_s

stm2.SaveToFile filepath_d, adSaveCreateOverWrite

end function

end class

利用Adodb.Stream直接下载文件

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里

。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:

1、设置你的服务器的iis,给doc等后缀名做映射

2、在向客户端发送时设置其contenttype

下面详细说明方法2

程序代码:

_code style="DISPLAY: none" name="html_code"><%

Response.Buffer = true

Response.Clear

dim url

Dim fso,fl,flsize

dim Dname

Dim objStream,ContentType,flName,isre,url1

'*********************************************调用时传入的下载文件名

Dname=trim(request("n"))

'******************************************************************

If Dname<>"" Then

'******************************下载文件存放的服务端目录

url=server.MapPath("/")&"\"&Dname

'***************************************************

End If

Set fso=Server.CreateObject("Scripting.FileSystemObject")

Set fl=fso.getfile(url)

flsize=fl.size

flName=fl.name

Set fl=Nothing

Set fso=Nothing

%>

<%

Set objStream = Server.CreateObject("ADODB.Stream")

objStream.Open

objStream.Type = 1

objStream.LoadFromFile url

Select Case lcase(Right(flName, 4))

Case ".asf"

ContentType = "video/x-ms-asf"

Case ".avi"

ContentType = "video/avi"

Case ".doc"

ContentType = "application/msword"

Case ".zip"

ContentType = "application/zip"

Case ".xls"

ContentType = "application/vnd.ms-excel"

Case ".gif"

ContentType = "image/gif"

Case ".jpg", "jpeg"

ContentType = "image/jpeg"

Case ".wav"

ContentType = "audio/wav"

Case ".mp3"

ContentType = "audio/mpeg3"

Case ".mpg", "mpeg"

ContentType = "video/mpeg"

Case ".rtf"

ContentType = "application/rtf"

Case ".htm", "html"

ContentType = "text/html"

Case ".txt"

ContentType = "text/plain"

Case Else

ContentType = "application/octet-stream"

End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & flName

Response.AddHeader "Content-Length", flsize

Response.Charset = "UTF-8"

Response.ContentType = ContentType

Response.BinaryWrite objStream.Read

Response.Flush

response.Clear()

objStream.Close

Set objStream = Nothing

%>

_lightcode style="BORDER-RIGHT: #999999 1px dotted; PADDING-RIGHT: 5px; BORDER-TOP: #999999

1px dotted; PADDING-LEFT: 5px; FONT-SIZE: 11px; PADDING-BOTTOM: 5px; BORDER-LEFT: #999999

1px dotted; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dotted; FONT-FAMILY: sans-serif;

HEIGHT: 40px; BACKGROUND-COLOR: #f9f9f9" name="html_lightcode"><%

Response.Buffer = true

Response.Clear

dim url

Dim fso,fl,flsize

dim Dname

Dim objStream,ContentType,flName,isre,url1

'*********************************************调用时传入的下载文件名

Dname=trim(request("n"))

'******************************************************************

If Dname<>"" Then

'******************************下载文件存放的服务端目录

url=server.MapPath("/")&"\"&Dname

'***************************************************

End If

Set fso=Server.CreateObject("Scripting.FileSystemObject")

Set fl=fso.getfile(url)

flsize=fl.size

flName=fl.name

Set fl=Nothing

Set fso=Nothing

%>

<%

Set objStream = Server.CreateObject("ADODB.Stream")

objStream.Open

objStream.Type = 1

objStream.LoadFromFile url

Select Case lcase(Right(flName, 4))

Case ".asf"

ContentType = "video/x-ms-asf"

Case ".avi"

ContentType = "video/avi"

Case ".doc"

ContentType = "application/msword"

Case ".zip"

ContentType = "application/zip"

Case ".xls"

ContentType = "application/vnd.ms-excel"

Case ".gif"

ContentType = "image/gif"

Case ".jpg", "jpeg"

ContentType = "image/jpeg"

Case ".wav"

ContentType = "audio/wav"

Case ".mp3"

ContentType = "audio/mpeg3"

Case ".mpg", "mpeg"

ContentType = "video/mpeg"

Case ".rtf"

ContentType = "application/rtf"

Case ".htm", "html"

ContentType = "text/html"

Case ".txt"

ContentType = "text/plain"

Case Else

ContentType = "application/octet-stream"

End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & flName

Response.AddHeader "Content-Length", flsize

Response.Charset = "UTF-8"

Response.ContentType = ContentType

Response.BinaryWrite objStream.Read

Response.Flush

response.Clear()

objStream.Close

Set objStream = Nothing

%>

原创粉丝点击