ASP: 瀏覽器中上傳檔案的方法與實現
最後更新:2017-02-28
來源:互聯網
上載者:User
瀏覽器 ---- 一、問題引入
---- 在現在的管理資訊系統中,比較先進的都已採用瀏覽器/伺服器的模型,在這種模型中都要涉及到用戶端與伺服器端的資訊互動問題,從伺服器端到用戶端的資訊傳遞技術已經比較成熟,這裡主要討論從用戶端到伺服器端的檔案上傳問題,基於Microsoft的IE4.0、IIS4.0、ASP(Active Server Page)和標準HTML語言。
---- 二、實現方法
---- 在ASP頁面中,利用HTML中的Form元素來實現。
---- 在Form元素的文法中,EncType表明提交資料的格式,Method表明提交的方法(Get/Post)。在IE4.0 及以後的版本中都支援"multipart/form-data"這種格式,相應的Method方法必須是Post,表明要上傳檔案到伺服器。當然同時在伺服器相應的WEB網站上要把屬性設為可寫。下面是一個樣本:
< form enctype="multipart/form-data"
action="http://dev_d/upload/post/cpshost.dll?
PUBLISH?http://dev_d/upload/UserUploadAction.asp"
method=post id=form2 name=form2 >
1. Press the Browse button and
choose a File to upload from your computer.
< br >< input type="file" id=file1 name=file1 >
2. Upload the file.
< br >< input type=hidden size=80 name="TargetURL"
value=http://dev_d/upload/post >
< input type=submit value='Upload'
id=submit1 name=submit1 >
< /form >
---- 三、實現要素
1 Form的enctype="multipart/form-data"。
2 Form的action="(UserURL)/cpshost.dll?PUBLISH?
(UserURL)/UserUploadAction.asp"。
---- 說明:cpshost.dll是用於檔案上傳的動態連結檔案,其後的PUBLISH參數也為固定,而(UserURL)指的是完整的URL地址,如:http://dev_d/upload。如果PUBLISH後沒有參數,上傳檔案完成後,只是簡單返迴文件已經上傳;如果PUBLISH後跟上完整URL的ASP檔案,就可以用ASP來處理檔案上傳後的其他動作,如修改相應的資料庫資料。可以在ASP檔案中用Request.Form("Variable")來訪問相應參數。對上傳檔案來說,Variable有四種可能的值:FileName 檔案名稱(不包括尾碼),FileExtention 檔案尾碼(包括"."),FilePath 上傳檔案儲存的伺服器端路徑,FileSize 上傳檔案的位元組大小。
---- 3 Form的Method的方法必須為Post。
---- 4 Form中必須有一個input元素,而且input的屬性type="file"。
---- 說明:如果要上傳多個檔案,有多個input元素就可以了,但至少有一個有效檔案,否則會出錯。
---- 系統會自動產生一個文本地區和一個"browse..."按鈕,可以直接在文本地區內輸入檔案路徑名稱,或按"browse..."按鈕,從檔案對話方塊中選擇一個檔案。
---- 5 Form中必須有一個隱含(即type=hidden)input元素,而且input的屬性name="TargetURL",屬性
---- value="(UserURL)",(UserURL)即為上傳檔案儲存位置的URL地址。
---- 說明:檔案儲存位置的URL地址屬性必須設為可寫,否則會返回此URL地址沒有寫的許可權。
---- 6 Form中必須有一個submit按鈕,即input的屬性type="submit",此按鈕即為上傳按鈕。或者在其他相關事件中調用此Form的Submit方法。但兩種方法實際上本質相同,只不過用方法調用還可以在上傳前加上其它處理代碼,如資料的有效性檢查等。
---- 四、完整執行個體
---- 1 使用者上傳檔案頁面UserUpload.asp
< % response.expires=0 % >
< HTML >
< HEAD >
< META NAME="GENERATOR"
Content="Microsoft Visual Studio 6.0" >
< /HEAD >
< BODY >
< form enctype="multipart/form-data"
action="http://dev_d/upload/post/cpshost.dll?
PUBLISH?http://dev_d/upload/UserUploadAction.asp"
method=post id=form2 name=form2 >
< table BORDER=0 CELLSPACING=3 CELLPADDING=3 >
< tr >
< td valign=top >< span >1. < /span >
< td >Press the Browse button and choose a File to upload from your computer.
< br >< input type="file" id=file1 name=file1 >
< br >< input type="file" id=file2 name=file2 >
< /td >
< tr >
< TD vAlign=top >< SPAN >2. < /SPAN >
< TD >Upload the file.
< br >< input type=hidden size=80 name="TargetURL" value="http://dev_d/upload/post" >
< input type=submit value='Upload'
id=submit1 name=submit1 >
< /td >
< /table >
< /form >
< /BODY >
< /HTML >
2 使用者上傳檔案處理頁面UserUploadAction.asp
< % Response.Buffer = TRUE % >
< % Response.expires=0 % >
< HTML >
< BODY >
< H3 >Upload Status:< BR >< /H3 >
< span style="color:gray" >< HR >
< % For I = 1 To Request.Form("FileName").Count
Response.Write "Uploaded File: < B >" &
Request.Form("FileName")(I) &
Request.Form("FileExtention")(I) &"< /B >< BR >"
Response.Write "Server Path: < B >" &
Request.Form("FilePath")(I) & "< /B >< BR >"
Response.Write "Size: < B >"
& Request.Form("FileSize")(I)
& " bytes< /B >< br >"
Next
FileName = Request.Form("FilePath")(1) &
Request.Form("FileName")(1) &
Request.Form("FileExtention")(1)
% >
< hr >< br >
< % if request.form("FilePath").count = 0 then
Response.Write ("No file was received.")
Response.End
else
Response.Write (filename+" File was received.")
end if % >
< /span >
< /BODY >
< /HTML >