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页面中,就可以把模板文件下载到客户机器上面了.

posted on 2004-12-14 13:43  一望无际的南  阅读(1721)  评论(0)    收藏  举报

导航