G>服務器端
以下代碼使用相同的對象提供服務器端的上傳處理功能。
< %@ LANGUAGE=VBScript% >
< % Option Explicit
Response.Expires = 0
' 定義變量和對象。
dim ado_stream
dim XML_dom
dim XML_file1
' 創建 Stream 對象
set ado_stream = Server.CreateObject("ADODB.Stream")
' 從Request對象創建 XMLDOM對象
set XML_dom = Server.CreateObject("MSXML2.DOMDocument")
XML_dom.load(request)
' 讀出包含二進制數據的節點
set XML_file1 = XML_dom.selectSingleNode("root/file1")
' 打開Stream對象,把數據存入其中
ado_stream.Type = 1 ' 1=adTypeBinary
ado_stream.open
ado_stream.Write XML_file1.nodeTypedValue
' 文件存盤
ado_stream.SaveToFile "c:\tmp\upload1.doc",2 ' 2=adSaveCreateOverWrite
ado_stream.close
' 銷毀對象
set ado_stream = Nothing
set XML_dom = Nothing
' 向浏覽器返回信息
Response.Write "Upload successful!"
% >
也可以使用Stream對象把數據放到數據庫的BLOB型字段中。
使用該方法的益處
不引起頁面轉換。
不需要專用組件。
可同時上傳多個文件。
這段程序是純腳本寫成的,可以很容易的插入到其他代碼中,而不需要任何Html對象的配合。還可以把這個邏輯在任何支持COM標准的語言中實現。
系統安全考慮
該方法只能使用於內部網絡,因為它需要IE5的安全級別設置為“低”。必須:
允許腳本和ActiveX對象。該設置允許浏覽器執行類似 "myobj = new activexobject(...)"的 JScript語句;
必須允許穿越域訪問數據源。這個設置允許在客戶端使用Stream對象。還必須在服務器和客戶端都安裝MS XML DOM 3.0 和MDAC 2.5 。