精典的ASP传奇的J2EE新生的NETFTP服务器服务器安全WINDOWSB/S 模式WEB安全WAP世界动态网站推广宣传
空间服务器数据库技术邮局服务器站長工具硬设与组建Alexa专题DHTML项目管理WEB标准电脑硬件
病毒知识电脑使用布线协议接入交换路由局域网无线网络网络规划
Visual BasicVisual C/C++MssqlMySqloracleSybase 存在安全风险进程系统进程列表应用程序进程列表其它进程列表
黑客编程漏洞分析本地提权免杀技术脚本漏洞数据库注入安全防护内网渗透加密解密工具使用
WAP技术WAP入门
 您的位置:   >> 相关知识 >> 桌面应用程序 >> Visual Basic >>

如何用VB接受xmlHttp传输过来的数据

合金网络科技

 
  添加日期:2007-4-3 点击次数:203次  
   
 

我用vb  xmlHttp做了个文件传输的例子,  
自觉是个挺值得看的例子,所以贴出来和大家一起交流一下。  
xml结构:  
<?xml  version='1.0'>  
<boot><file1>文件以二进制方式存在这里</file1></boot>下面开始  
Private  Sub  CreateAndTranXML()  

 Dim  ado_stream  As  New  ADODB.Stream  
 Dim  xml_dom  As  New  MSXML2.DOMDocument30  
 Dim  strA  As  String,  szFile  As  String,  m_szUpFile  As  String  

 m_szUpFile  =  'http://127.0.0.1/getupFile.asp'  ‘server端的ASP接受程序  
 szFile  =  App.Path  &  '\temp.jpg'  '要传送的jpg文件或任何文档  
 strA  =  '<?xml version='  &  Chr(34)  &  '1.0'  &  Chr(34)  &  '  ?> <root/>'  
 xml_dom.loadXML  (strA)  
 
 xml_dom.documentElement.setAttribute  'xmlns:dt',  'urn:schemas-microsoft-com:datatypes'  
 
 Dim  l_node1  
 Set  l_node1  =  xml_dom.createElement('file1')  '建立一个节点  
 l_node1.dataType  =  'bin.base64'  

 ado_stream.Type  =  1 ' 1=adTypeBinary  
 ado_stream.open  
 ado_stream.LoadFromFile  (szFile)  
 l_node1.nodeTypedValue  =  ado_stream.Read(-1) ' -1=adReadAll  
 ado_stream.Close  
 xml_dom.documentElement.appendChild  (l_node1)  

 xml_dom.save  App.Path  &  '\result.xml'  '本地保存一个备份  
 '可以创建多个二进制节点,一次上传多个文件  
 
 '  把XML文档发送到Web服务器  

 Dim  xmlHttp  As  New  MSXML2.XMLHTTP30  

 xmlHttp.open  'POST',  m_szUpFile,  False  
 xmlHttp.setRequestHeader  'CONTENT-TYPE',  'text/xml'  
 xmlHttp.send  xml_dom  
 ' 显示服务器返回的信息  
 Debug.Print  xmlHttp.responseText  
 
 If  xmlHttp.Status  =  200  Then  
MsgBox  ('上传成功!')  
 End  If  
 Set  xmlHttp  =  Nothing  
 Set  xml_dom  =  Nothing  
End  Sub  
 
GetUpFile.asp(Server端的)  
<%  
 Dim  ado_stream  
 Dim  oXmlDom
 Dim  xml_file1,m_szpath  
 
 Set  oXMLDoc  =  Server.CreateObject('Microsoft.XMLDOM')
 szPath=server.mappath('getupfile.asp')  
 nPos=instrRev(szPath  ,'\')  
 m_szPath=left(szPath,nPos)  

 response.write  szPath  
 oXMLDoc.load  request  
 szNow=year(now())  &  month(now())  &  day(now())  &  hour(now())  &  minute(now())  &  second(now())  
 szpath=m_szPath &  'upfile.xml'  
 oXMLDoc.save  szPath  

 ' 创建 Stream 对象  
 Set  ado_stream  =  Server.CreateObject('ADODB.Stream')  
 
 ' 读出包含二进制数据的节点  
 Set  xml_file1  =  oXMLDoc.selectSingleNode('/root/file1')  
 
 ' 打开Stream对象,把数据存入其中  
 ado_stream.Type  =  1 ' 1=adTypeBinary  
 ado_stream.open  
 ado_stream.Write  xml_file1.nodeTypedValue  
 ' 文件存盘  
 szPath=m_szpath  &'images\'  &  szNow  &  '.jpg'  '存储文件  
 ado_stream.SaveToFile  szpath,  2 ' 2=adSaveCreateOverWrite  
 response.write  szpath  
 ado_stream.Close  
 
 ' 销毁对象  
 Set  ado_stream  =  Nothing  
 Set  xmlDoc  =  Nothing  
%>  


程序在win2000已经测试通过,不过这里有个问题不能解决,  
就是xmlHttp和AdoStream都可以保存文件,但都不能建立文件夹,  
就是可读写文件,但无法对目录操作。  
因为我有个想法用xmlhttp替代winsock来做,  
server端也写个vb程序来接受xmlHttp的东西,  
哪位大大有做过或看过的,能給我指点迷津,不用客气的。  
---------------------------------------------------------------  
使用该方法的益处
 
 不引起页面转换。
 不需要专用组件。
 可同时上传多个文件。
 这段程序是纯脚本写成的,可以很容易的插入到其他代码中,而不需要任何HTML对象的配合。还可以把这个逻辑在任何支持COM标准的语言中实现。
 
 系统安全考虑
 
 该方法如果不用VB只用VBscript  只能使用于内部网络,因为它需要IE5的安全级别设置为“低”。必须:
 
 允许脚本和ActiveX对象。该设置允许浏览器执行类似 'myobj = new activexobject(...)'的 JScript语句;
 必须允许穿越域访问数据源。这个设置允许在客户端使用Stream对象。还必须在服务器和客户端都安装MS XML DOM 3.0 和MDAC 2.5 。

精典的ASP精选TOP
· 利用ADODB.Stream 防盗链
· Adodb.Stream说明手册
· 采集需要登录
· ASP 判断远程图片是否存在
· 在ServerXMLHTTP组件中使用代理服务器
· 用XMLHTTP通过代理服务器从服务提取数据的一些问题
· objXML.readystate的值
· 互联网HTTP连接等出错代码大全
· 利用XMLHTTP实现的二级连动Select
· 利用 xmlhttp 分块上传文件
 
服务器安全点击TOP
· 新云最新漏洞总结篇
· 各类网站的默认数据库和密码
· Windows Server2003 防木马权限设置IIS服务器安全配置整理
· 针对ASP网站的Win 2003硬盘安全设置
· IIS 6 的PHP 最佳配置方法
· 利用SA.exe 将Iusr_victim克隆为Administrator
· Cmd模式下的入侵技术大全
· 破解网页代码加密
· SERV-U 6.4提权方法,通杀SERV-U版本
· 新云网站管理系统文件注入漏洞
 
硬设与组建点击TOP
· 从头到尾教你组建小型局域网20
· 从头到尾教你组建小型局域网19
· 从头到尾教你组建小型局域网18
· 从头到尾教你组建小型局域网17
· 从头到尾教你组建小型局域网16
· 从头到尾教你组建小型局域网15
· 从头到尾教你组建小型局域网14
· 从头到尾教你组建小型局域网13
· 从头到尾教你组建小型局域网12
· 从头到尾教你组建小型局域网11
 
病毒知识点击TOP
· 不再重装 手动清除顽固病毒AutoRUN
· 木马静态变动态 DLL木马程序大揭秘
· 详解一个很牛X的网马
· 一个网马
· Trojan-Downloader.Win32.Delf.bab
· 抓了一个AJAX的网马
· 迅雷5 最新0day利用程序
· 自动关掉270种杀毒软件
· RealPlayer 最新网马
· 五个反弹型后门的源代码
 
WINDOWS点击TOP
· 4【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 3【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 2【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· 1【系统知识】常见文件扩展名及简要说明!!! ==超详尽==
· Capture an HTML document as an image
· 如何给eWebEditor编辑器加上运行代码框功能
· 给CuteEditor5增加了高亮代码显示功能
· CuteEditor6.0使用配置心得体会
· 关于IE插件的CLSID问题
· 对开发的程序(制作CAB)进行签名,并允许网站中使用
  "凌风微型文章系统",针对"搜索引擎"完美设计,提高"搜索引擎"对网站容量,质量的评估值,"扁平化,转静态 ..."