• OA开发中下载模板文件的方法之xml篇


    在OA办公系统中通常要把模板下载下来,然后对其进行数据操作.
    而这个过程,肯定不希望客户来控制.
    我们希望利用网页传回javascript或者vbscipt,来创建一个文档提供给客户.
    无论如何,这个过程都需要利用到"静悄悄"下载一个模板文件,并取得这个模板文件的对象.

    HOW TO  DO?
    1 首先我们在服务器端利用xml对象创建一个包含文件二进制数据的xml.
    2 我们通过网页形式传给客户一个客户端脚读取xml并将其转换为实际存在客户端的文件,
    3 取得这个客户端文件对象,并对其作相应的操作.

    第3步我们不说.

    1是怎么来完成的?
    <%
    GetFileByFileName(
    "试用期考核评估表.doc")
    ''==================================================================
    Function GetFileByFileName(docFileName)
    '' ADO-stream 对象 

    Dim ado_stream 
    set ado_stream = Server.createobject("ADODB.Stream")
    ''1=adTypeBinary 
    ado_stream.Type = 1  
    ado_stream.Open()
    ado_stream.LoadFromFile server.mappath(docFileName)

    ''=======================
    set xml_dom = Server.createobject("MSXML2.DOMDocument")
    xml_dom.loadXML(
    "<?xml version='1.0'?><root/>")
    ''指定数据类型 
    xml_dom.documentElement.setAttribute "xmlns:dt""urn:schemas-microsoft-com:datatypes"

    '' 创建一个新节点,设置其为二进制数据节点 
    set FileData_node = xml_dom.createElement("FileData")
    FileData_node.dataType 
    = "bin.base64" 
    '' -1=adReadAll 
    FileData_node.nodeTypedValue = ado_stream.Read(-1)
    ado_stream.Close() 
    xml_dom.documentElement.appendChild(FileData_node)
    Response.write xml_dom.xml


    End Function
    ''==================================================================

    %
    >

    用localhost/你的虚拟目录/fileservice.asp
    来看看:
      <?xml version="1.0" ?> 
    <root xmlns:dt="urn:schemas-microsoft-com:datatypes">
      
    <FileData dt:dt="bin.base64">0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAQwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</FileData> 
      
    </root>


    其中filedata的数据我修改过.

    接着我们来完成2
    ' 从Request对象创建 XMLDOM对象 
    set xml_dom = CreateObject("MSXML2.DOMDocument"
    xml_dom.load 
    "http://172.16.1.249/applysheet/asp/template/fileservice.asp"

    msgbox xml_dom.text
    ' 读出包含二进制数据的节点 
    set xml_file1 = xml_dom.selectSingleNode("//root/FileData"
    if IsNull(xml_file1)then
    msgbox "null"
    else
    msgbox xml_file1.text
    end if

    ' 打开Stream对象,把数据存入其中 
    ado_stream.Type = 1 ' 1=adTypeBinary 
    ado_stream.open()
    ado_stream.Write xml_file1.nodeTypedValue 
    ' 文件存盘 
    '
     2=adSaveCreateOverWrite 
    ado_stream.SaveToFile "c:\temp.doc",2 
    ado_stream.close() 

    ' 销毁对象 
    set ado_stream = Nothing 
    set xml_dom = Nothing 


    easy吧?
    把这个脚本修改一下套入一个asp页面中,就可以把模板文件下载到客户机器上面了.

  • 相关阅读:
    Java版AES-CBC-CMAC加密
    并发编程(十九):并发编程实践
    并发编程(十八):ScheduledThreadPoolExcutor和FutureTask
    并发编程(十七):Excutor与ThreadPoolExcutor
    并发编程(十六):线程池概述
    并发编程(十五):Java并发工具类
    并发编程(十四):原子操作类
    并发编程(十三):Fork-Join框架
    并发编程(十二):阻塞队列
    并发编程(十一):非阻塞队列ConcurrentLinkedQueue
  • 原文地址:https://www.cnblogs.com/king_astar/p/76934.html
Copyright © 2020-2023  润新知