关于Adodb.Stream 的使用说明 https://blog.csdn.net/kakabulusi/article/details/77248750 组件:"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 %>
|