操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

通过网页实现文件上传

2003-11-29 网友评论 0 条 点击进入论坛

我们建设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="
/TestDir/''>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]
 
文:绍兴 毛贵明

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 用户名: 密码:
  匿名发表
今日推荐
技术文库(共有 45972 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
移动开发
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail