asp+xml上傳檔案

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.