ASP: 瀏覽器中上傳檔案的方法與實現

來源:互聯網
上載者: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 >

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.