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

你可能感兴趣的:(xml)