使用XML技术上传文件的例子(3)_Xml教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:一个以Javascript xml的树型列表 这是在www.java2s.com网站下载的一个以Javascript xml的树型列表,这个列表界面非常的漂亮,但是由于里面内容比较复杂,而现在项目需要用到这个列表,我到现在还没有摸清怎么在里面让点击一
对ADO Stream对象的思考
我们可以在客户端创建一个包含一个或者多个二进制节点的XML文档。我们还必须把文件内容填入节点中。但是很不幸,脚本语言不能访问本地文件系统,并且Scripting.FileSystem对象(是Win32系统的内置对象)到目前为止还不能访问二进制文件。这是设计上的限制。所以我们需要另外找一个可以提供对本地二进制文件的访问的COM对象。
ADO Stream对象(MDAC 2.5中的组件)提供了读、写和管理二进制流数据的手段。字节流的内容可以是文本,或者二进制数据,并且没有容量上的限制。在ADO 2.5中,Microsoft对Stream对象的介绍不属于ADO对象结构的任何一层,所以,我们无需捆绑即可使用该对象。
本文中使用Stream对象来访问文件内容,再把内容存入XML节点。
客户端
以下示例代码使用Stream和MSXML对象完成文件上传动作。
<HTML> <HEAD><TITLE>File Send</TITLE></HEAD> <BODY> <INPUT id=btn_send name="btn_send" type=button value="FILE SEND"> <DIV id=div_message>Ready</DIV> </BODY> </HTML> <SCRIPT LANGUAGE=JavaScript> // 上传函数 function btn_send.onclick() { // 创建 ADO-stream 对象 var ado_stream = new ActiveXObject("ADODB.Stream"); // 创建包含默认头信息和根节点的 XML文档 var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); xml_dom.loadXML('<?xml version="1.0" ?> <root/>'); // 指定数据类型 xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes"); // 创建一个新节点,设置其为二进制数据节点 var l_node1 = xml_dom.createElement("file1"); l_node1.dataType = "bin.base64"; // 打开Stream对象,读源文件 ado_stream.Type = 1; // 1=adTypeBinary ado_stream.Open(); ado_stream.LoadFromFile("c:tmpmyfile.doc"); // 将文件内容存入XML节点 l_node1.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll ado_stream.Close(); xml_dom.documentElement.appendChild(l_node1); // 可以创建多个二进制节点,一次上传多个文件 // 把XML文档发送到Web服务器 var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("POST","./file_recieve.asp",false); xmlhttp.send(xml_dom); // 显示服务器返回的信息 div_message.innerHTML = xmlhttp.ResponseText; } </SCRIPT> |
分享:xml中的空格之完全解说在xml输入文件中决定哪些空格是重要的,xslt处理器要看见这些空格结点。而决定的密钥就是xml:space属性。 只适合对xml文件结构有一定了解的学者,不适合初学者。请按从上至下的顺序阅读
相关Xml教程:
- 相关链接:
- 教程说明:
Xml教程-使用XML技术上传文件的例子(3)。