使用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)
。