xml技术上传文件2

作者:未知 来源:未知 添加时间:2006年7月3日 字体:

服务器端:

  从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.nodetyped&#118alue - 该可读写属性包含了按照制定类型表示的指定节点的数据。
我们可以创建一个包含多个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节点。

ppdesk