本文講解了乙個使用
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...