XML上傳檔案例子

2021-04-17 01:39:38 字數 1180 閱讀 4240

本文講解了乙個使用

xml技術上傳檔案的例子,使用該方法沒有傳統方法中的種種限制。 這個例子講述了如何使用ms

xml3.0和ado stream物件來實現這種新的上傳方法。好處有很多,比如,不需要專用的上傳元件。

引言為了在html網頁中獲得上傳功能,在客戶端我們可以使用如下格式的form:

這種方案在客戶端和伺服器端的使用都有很多限制。首先,我們必須使用post方法,因為get方法無法處理這樣的表單資料。並且,沒有什麼方法可以在不使用表單的情況下引發乙個post動作。把資料傳送給表單處理程式後,瀏覽器將會把處理程式作為新頁面載入,然後使用者會看到乙個不討人喜歡的頁面轉換過程。

enctype屬性為表單定義了mime編碼方式,上傳檔案的表單的enctype屬性必須使用「multipart/form-data」。把這個屬性設定為「multipart/form-data」就建立了乙個與傳統結構不同的post緩衝區(復合結構),asp的request物件無法訪問這樣的表單內容。所以,我們可以使用request.binaryread方法來訪問這些資料,但是無法使用指令碼語言來完成這一切。request.binaryread方法返回乙個vtarray型資料(只包含無符號一位元組字元的variant型陣列)。但是指令碼語言只能處理variant型資料。為了解決這個問題,只能使用專用的asp上傳元件,或者isapi擴充套件程式,比如cpshost.dll。這是設計上的限制。

新的上傳方案

需要按照如下步驟操作。

客戶端:

使用msxml 3.0建立乙個xml文件

建立乙個針對二進位制內容的xml節點

使用ado stream object將上傳的檔案資料放入該節點

使用xmlhttp物件把這個xml文件傳送給web伺服器

伺服器端:

從request物件中讀出xml文件

讀出二進位制節點中的資料並且儲存到伺服器上的檔案中。當然,我們也可以將其儲存到資料庫的blob型字段中。

在解釋這段**之前,我們可以對這個方案進行一些思考。

對xml的思考

xml格式支援很多資料型別,比如numeric, float, character等等。很多作者將xml定義為ascii格式,但是我們不能忽視,xml技術還可以使用「bin.base64」資料型別來描述二進位制資訊。這個特性在ms xml3.0解析器重得到完全的支援,但是目前還需要一些特別設定。該物件提供一些可以對二進位制資料進行完全控制的屬性:

PHP實現檔案上傳例子

php實現檔案上傳例子 例項1 上載檔案表單網頁 updatefile.htm ctrl a 全部選擇 然後拷貝 處理上載檔案網頁 updatefile.php3 ctrl a 全部選擇 然後拷貝 注意 檔案上載後必須拷貝到新的地方或重新更名,否則當程序執行完後,上載樣本將被刪除 例項2 php3是...

Servlet 基本小例子檔案上傳

匯入的包 commons fileupload 1.2.1.jar commons io 1.3.2.jar 頁面 注意的是 entype 必須設定為multipart form data 接受表單亂碼設定 req.setcharacterencoding utf 8 物件的工廠,可以設定緩衝區大小...

生成xml檔案並上傳至oss

在做乙個標定工具時,儲存標定功能需要將的標定資訊儲存為xml檔案。下面我用了dom法和dom4j法實現生成xml檔案,用了位元組流和file兩種方法實現儲存。其中遇到的一些問題也會在下文說明。建立文件解析器物件 documentbuilde ctory documentbuilde ctory do...