asp+xml上传文件

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 tigerlgf 的 blog

<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
%>

本文关键:asp+xml上传文件
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top