通過網頁實現文件上傳 我們建設web網站經常會遇到的一個問題就是: 如何通過瀏覽器上傳文件到web伺服器。通常從瀏覽者那裡獲取文件的方法,如 通過ftp、E-mail方式等,都比較繁瑣,特別是對於網站管理者來說,這些方式都需要一定程度的人工干預,否則就不能把結果 實時地顯示在網頁上。 Microsoft Posting Acceptor是微軟公司發佈的一個免費伺服器組件,使用它可以很簡單地實現瀏覽器通過調用網頁向伺服器端上 傳文件(如果再結合資料庫技術編寫相應的asp代碼,就能使上傳結果自動顯示在網頁上)。下面就結合筆者的實踐經驗對這一 方案作一簡要介紹。 本方案的軟體配置如下:客戶機操作系統為 Windows98;伺服器操作系統為Windows NT Server;Web伺服器為IIS4.0。為使IIS能 夠接收上傳的文件,還必須安裝Microsoft Posting Acceptor組件,該組件位於NT 4.0 Option Pack的Site Server Express中。Microsoft Posting Acceptor組件的ISAPI擴展函數CPSHOST.DLL直接處理文件上傳,目的URL被映射、解析為伺服器上的物理磁牒位置。具 體應用見如下網頁代碼: Upload.asp: <% Response.Buffer = TRUE %> <% if (Len(Request.ServerVariables("LOGON_USER")) = 0 ) then %> <% Response.Status = "401 Unauthorized" %> <HTML><BODY><B>錯誤: 拒絕訪問.</B><P></BODY></HTML> <% else %> <html> <head> <title>上傳文件</title> </head> <body> <h1 align="center">上傳文件</h1> <form enctype="multipart/form-data" action="http://<%= Request.ServerVariables("SERVER_NAME") %>/TestDir/cpshost.dll?PUBLISH" method="post"> 請選擇要上傳的文件: <input name="my_file" type="file"><br> 請選擇要上傳的文件: <input name="my_file" type="file"><br> 請選擇要上傳的文件: <input name="my_file" type="file"><br> <input name="TargetURL" type="hidden" value=" http://<%=Request.ServerVariables("SERVER_NAME")%>/TestDir/ <%=Request.ServerVariables("LOGON_USER") %>"<br> <input type="submit" name=" submit " value="上 傳"> </form> </body> </html> <% end if %> 上述代碼以ASP文件的形式存放在Web網站宿主目錄下TestDir目錄中,用戶只需用瀏覽器請求該檔案即可。 需要注意的幾點是: 1.Request.ServerVariables("LOGON_USER")返回登錄到Windows NT域的用戶名,在本例中,如果用戶名為空,則顯示拒絕訪問頁 面; 不為空,才顯示正常上傳頁面。 2.在安裝Microsoft Posting Acceptor組件後,CPSHOST.DLL文件位於Web伺服器宿主目錄下scripts目錄中,可以把該檔案拷貝到自 己的目錄中(如本例的TestDir目錄)使用。 3.在表單中,enctype="multipart/form-data" 這一項不能少,否則不能正常上傳。 4.表單控件TargetURL的名稱(name屬性)不能變。type="hidden"使該控件在頁面中不顯示。value屬性確定上傳文件在伺服器中存 放的路徑,可以根據實際情況調整。在本例中,文件上傳路徑是TestDir目錄(也就是本ASP文件和CPSHOST.DLL文件存放目錄) 下與登錄用戶名同名的子目錄,並且該目錄權限設為可寫。 5.my_file控件類型為「file」,在瀏覽器中顯示的是一個文本框後帶一個「瀏覽」按鈕。當用戶單擊「瀏覽」按鈕時,將彈出一 個標準的選擇文件對話視窗,供用戶選擇要上傳的文件。可以根據實際需要增減my_file控件的個數。 6.附屬於Windows 2000 Server及Windows 2000 Professional的IIS 5.0並沒有提供Site Server Express。如果您想在Windows 2000下使用 文件上傳功能,必須先在Windows NT Server 4.0下安裝Site Server Express,然後再從Windows NT Server 4.0昇級到Windows 2000 Server。目前Windows 95/98、Windows NT Workstation、Windows 2000 Professional 都無法使用Site Server Express 所提供的功能。 [ZWYZ01] |