### XML 技术上传文件

服务器端：
从 Request 对象中读出 XML 文档读出二进制节点中的数据并且存储到服务器上的文件中。当然，我们也可以将其存储到数据库的 BLOB 型字段中。
在解释这段代码之前，我们可以对这个方案进行一些思考。
对 XML 的思考
XML 格式支持很多数据类型，比如 numeric, float, character 等等。很多作者将 XML 定义为 ASCII 格式，但是我们不能忽视，XML 技术还可以使用“bin.base64”数据类型来描述二进制信息。这个特性在 MS XML3.0 解析器重得到完全的支持，但是目前还需要一些特别设置。该对象提供一些可以对二进制数据进行完全控制的属性：
obj_node.dataType - 该可读写的属性定义了特定节点的数据类型。MSXML 解析器支持更多的数据类型（参见 MSDN：http://msdn.microsoft.com/library/psdk/xmlsdk/xmls3z1v.htm）
对于二进制数据，我们可以使用“bin.base64”类型。
obj_node.nodeTypedValue - 该可读写属性包含了按照制定类型表示的指定节点的数据。
我们可以创建一个包含多个 bin.base64 类型节点的 XML 文档，节点中包含上传的文件。这点特性可以使用一个 POST 一次上传多个文件。
我们可以使用 XMLHttpRequest 对象和 POST 方法发送一个 XML 文档给 Web 服务器。该对象为 HTTP 服务器提供了客户端协议支持，允许在 Web 服务器上发送和接受 MS XMLDOM 对象。XMLHttpRequest 是 Internet Explorer 5 内置的 COM 对象（不需要定制安装），并且发送完毕后无需转换页面。
对 ADO Stream 对象的思考
我们可以在客户端创建一个包含一个或者多个二进制节点的 XML 文档。我们还必须把文件内容填入节点中。但是很不幸，脚本语言不能访问本地文件系统，并且 Scripting.FileSystem 对象（是 Win32 系统的内置对象）到目前为止还不能访问二进制文件。这是设计上的限制。所以我们需要另外找一个可以提供对本地二进制文件的访问的 COM 对象。
ADO Stream 对象（MDAC 2.5 中的组件）提供了读、写和管理二进制流数据的手段。字节流的内容可以是文本，或者二进制数据，并且没有容量上的限制。在 ADO 2.5 中，Microsoft 对 Stream 对象的介绍不属于 ADO 对象结构的任何一层，所以，我们无需捆绑即可使用该对象。
本文中使用 Stream 对象来访问文件内容，再把内容存入 XML 节点。