|

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 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 的使用地方很多 这里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是文件以什么编码存放的。
返回一个字符串,存放文件的内容。
这个函数只能读文本文件。读二进制文件也差不多。要用的人可以自己改
资源地址:http://www.zaqi.net/word_view.asp?files_id=321 |
|