如何在Web頁面中集成文件上傳功能


  當前,個人主頁製作非常流行。當用戶開發好自己的頁面時,需要將文件傳輸到服務器上,解決這個問題的方法之一 是運行FTP服務器並將每個用戶的FTP默認目錄設為用戶的Web主目錄,這樣用戶就能運行FTP客戶程序並上傳文件到指定的 Web目錄。

由於Windows NT 和 Windows98均不提供直接的基於窗口形式的FTP客戶程序,用戶必須懂得如何使用基於命令行 的FTP客戶,或掌握一種新的基於窗口形式的FTP客戶程序。因此,這種解決方案僅對熟悉FTP且富有經驗的用戶來說是可行 的。 如果我們能把文件上傳功能與Web集成,使用戶僅用Web瀏覽器就能完成上傳任務,這對於他們來說將是非常方便的。


下面就結合筆者的實踐經驗對這一方案作一簡要介紹。


本方案的軟件配置如下:客戶機操作系統為 Windows98 ; 服務器操作系統為Windows NT Server;Web服務器為 IIS4.0。為使IIS能夠接收上傳的文件, 還必須安裝Posting Acceptor組件,該組件位於NT 4.0 Option Pack 的 Site Server Express中。Posting Acceptor組件的ISAPI擴展函數CPSHOST.DLL直接處理文件上傳,目的URL被映射、解析為服務器上的物理磁盤位置。

具體應用見如下網頁代碼:

 

  1. <% Response.Buffer = TRUE %>
  2. <% if (Len(Request.ServerVariables("LOGON_USER")) = 0 ) then %>
  3.         <% Response.Status = "401 Unauthorized" %>
  4.         <HTML><BODY><B>錯誤: 拒絕訪問.</B><P></BODY></HTML>
  5. <% else %>
  6.         <html>
  7.         <head>
  8.                 <title>上傳文件</title>
  9.         </head>
  10.         <body>
  11.  
  12.         <h1 align="center">上傳文件</h1>
  13.  
  14.         <form method="post" enctype="multipart/form-data"
  15.         action="http://<%= Request.ServerVariables("SERVER_NAME") %>/myweb/cpshost.dll?PUBLISH">
  16.                 <input name="TargetURL" type="hidden"
  17.                 value="http://<%=Request.ServerVariables("SERVER_NAME")%>/myweb/<%=Request.ServerVariables("LOGON_USER") %>" >
  18.                 請選擇要上傳的文件: <input name="my_file" type="file"><br>
  19.                 請選擇要上傳的文件: <input name="my_file" type="file"><br>
  20.                 請選擇要上傳的文件: <input name="my_file" type="file"><br>
  21.                 <br>
  22.                 <input type="submit" name="cmdup" value="上 傳">
  23.         </form>
  24. </body>
  25. </html>
  26. <% end if %>




上述代碼以ASP文件的形式存放在Web網站宿主目錄下myweb目錄中, 用戶只需用瀏覽器請求該文件即可。
需要注意的幾點是:


□Request.ServerVariables("LOGON_USER")返回登錄到Windows NT域的用戶名,在本例中,如果用戶名為空,則顯示 拒絕訪問頁面;不為空,才顯示正常上傳頁面。


□在安裝Posting Acceptor組件後,CPSHOST.DLL文件位於Web服務器宿主目錄下scripts目錄中,可以把該文件拷貝到 自己的目錄中使用。


□在表單中,enctype="multipart/form-data" 這一項不能少,否則不能正常上傳。


□表單控件TargetURL的名稱(name屬性)不能變。type="hidden"使該控件在頁面中不顯示。value屬性確定上傳文件在 服務器中存放的路徑, 可以根據實際情況調整。在本例中,文件上傳路徑是myweb目錄(也就是本ASP文件和CPSHOST.DLL文件存放目錄)下與登錄用戶名同名的子目錄,並且該目錄權限設為可寫。


□my_file控件類型為"file",在瀏覽器中顯示的是一個文本框後帶一個"瀏覽"按鈕。當用戶單擊"瀏覽"按鈕時,將彈出一個標準的選擇文件對話框,供用戶選擇要上傳的文件。可以根據實際需要增減my_file控件的個數。






[本日志由 FindSome 于 2014-08-06 06:17 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: asp 上傳
相關日誌:

评论: 0 | 引用: 0 | 查看次数: 4018
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭