而这个过程,肯定不希望客户来控制.
我们希望利用网页传回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
''==================================================================
%>
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>
- <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
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页面中,就可以把模板文件下载到客户机器上面了.