• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

asp+xml上传文件

发布: 2007-5-25 23:40 | 作者: 佚名 | 来源: 互连网 | 查看: 57次 | 进入软件测试论坛讨论

领测软件测试网

<font size=18>test.htm上传文件表单页面代码:
<HTML>
<HEAD>
<TITLE>File Send</TITLE>
</HEAD>
<BODY>
<INPUT id=filename name=filename type=file>


 


<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()
{
if (filename.value=="")
{
alert("文件不存在,或文件内容为空。");
return false;
}
//创建 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 file_body = xml_dom.createElement("file_body");
file_body.dataType = "bin.base64";
//打开Stream对象,读源文件
ado_stream.Type = 1; // 1=adTypeBinary 
ado_stream.Open(); 
ado_stream.LoadFromFile(filename.value);
//将文件内容存入XML节点
file_body.nodeTypedvalue = ado_stream.Read(-1); // -1=adReadAll
ado_stream.Close();
xml_dom.documentElement.appendChild(file_body);
//
//创建一个新节点,设置其为字符串型数据
var file_name = xml_dom.createElement("file_name");
file_name.dataType = "string";
//将文件名存储在此节点
file_name.nodeTypedvalue = filename.value.toString();
xml_dom.documentElement.appendChild(file_name);
//
//可以创建多个二进制节点,一次上传多个文件


//把XML文档发送到Web服务器
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("POST","./test.asp",false);
xmlhttp.send(xml_dom);
//显示服务器返回的信息
div_message.innerHTML = xmlhttp.ResponseText;
}
</SCRIPT>



<font size=18>test.asp上传文件处理程序代码:


<%@ LANGUAGE=VBScript%>
<%
Option Explicit
Response.Expires = 0
' 定义变量和对象。
dim ado_stream
dim xml_dom,filename
dim xml_file1,xml_file2


'创建 Stream 对象
set ado_stream = Server.CreateObject("ADODB.Stream")
'从Request对象创建 XMLDOM对象
set xml_dom = Server.CreateObject("MSXML2.DOMDocument")
xml_dom.load(request)


'读出文件的文件名
set xml_file2 = xml_dom.selectSingleNode("root/file_name")
filename = ParseFileName(Cstr(xml_file2.nodeTypedvalue))


'读出包含二进制数据的节点
set xml_file1 = xml_dom.selectSingleNode("root/file_body")


' 打开Stream对象,把数据存入其中
ado_stream.Type = 1 ' 1=adTypeBinary
ado_stream.open
ado_stream.Write xml_file1.nodeTypedvalue
' 文件存盘
dim filepath
if right(server.mappath("upload"),1)<>"\" then
filepath = Server.mappath("upload") + "\" + filename
else
filepath = server.mappath("upload") + filename
end if
ado_stream.SaveToFile filepath,2 ' 2=adSaveCreateOverWrite 
ado_stream.close
' 销毁对象 
set ado_stream = Nothing 
set xml_dom = Nothing
' 向浏览器返回信息
Response.Write "Upload successful!"+ filename



Function ParseFileName (sFileIn)
Dim I
For I = Len(sFileIn) To 1 Step -1 
If InStr("\", Mid(sFileIn, I, 1)) Then Exit For 
Next 
ParseFileName = Mid(sFileIn, I + 1, Len(sFileIn) - I) 
End Function
%>

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网