zoukankan      html  css  js  c++  java
  • adodb stream 使用说明

    关于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="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的文件操作类
    <%

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


    ’*************************************************************
    ’@author: 面条
    ’@realname: 徐仁禄
    ’@email: xurenlu@sohu.com
    ’@QQ: 55547082
    ’@Homepage: http://www.ksdn.net
    ’@版权申明:
    ’ 非盈利性质团体或者个人可以免费使用.
    ’*************************************************************


    ’*************************************************************
    ’ 类名称: 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

    %>
    _sunny.gif" width=0 onload=show(this)>

    感谢:jude_liu 

  • 相关阅读:
    springmvc始终跳转至首页,不报404错误
    c3p0数据库连接池无法连接数据库—错误使用了username关键字
    maven无法下载依赖jar包—几种仓库的区别
    Goland开发工具安装教程
    Go语言代码规范指导
    go语言入门教程:基本语法之变量声明及注意事项
    为什么越来越多的人偏爱go语言
    go语言入门教程:基本语法—常量constant
    go语言入门教程:基本语法之数据类型
    三分钟了解Go语言的前世今生
  • 原文地址:https://www.cnblogs.com/xred/p/2260562.html
Copyright © 2011-2022 走看看