新浪首页免费邮件用户注册网站地图
上移动梦网
赢手机大奖

新浪首页 > 科技时代 > 网上学园 > 主页制作 > 正文
通过网页实现文件上传

http://www.sina.com.cn 2001/06/28 14:55 赛迪网 蒋晓京

  我们建设web网站经常会遇到的一个问题就是:如何实现通过浏览器上传文件到web服务器。通常从浏览者那里获取文件的方法,如通过ftp、email方式等,都比较繁琐,特别是对于网站管理者来说,这些方式都需要一定程度的人工干预,否则就不能把结果实时地显示在网页上。microsoft posting acceptor(简称mpa)是微软公司发布的一个免费服务器组件,使用它可以容易地实现浏览器通过调用网页向服务器端上传文件,如果再编写相应的asp代码,就能使上传结果自动显示在网页上,从而实现诸如美术、摄影作品的征集展示,软件、程
序的动态发布以及通过网页发邮件中的附件上载等功能。你甚至可以为用户提供宿主服务,让他们在你的服务器上发布自己的主页,就像现在因特网上提供的免费个人主页空间那样。开发者只须编写一次asp代码,以后的所有工作都将自动进行。

  安装运行mpa

  1.环境:要安装mpa,首先应确保你的web服务器满足运行asp程序的条件。这方面的文章很多,这里就不重复了。例如可配置为:windowsnt4.0+optionpack4。

  2.软件:可在以下网址下载mpa:

  http://www.microsoft.com/msdownload/postacc.htm,应该是一个2mb多的exe文件。

  3.安装:在web服务器上运行下载的文件,运行后在web发布目录的上级目录(一般是c:inetpubscript目录)中找到cpshost.dll文件,表明mpa已安装。安装后还生成一些技术文档,有html格式的,也有pdf格式的,里面有对mpa很详细的说明。

  4.设置:把cpshost.dll文件所在目录设为web发布虚拟目录,并把访问权限设为“可执行”,把url“http://(服务器网址)/users”对应的目录权限设为上传者可“写入”。

  5.运行:在浏览器中调用该目录下的upload.asp页,即可实现通过网页的文件上传。

  使用mpa的几点体会

  编辑推荐阅读

  ●用ASP编写计数器

  ●专题:网站整体设计技巧

  1.浏览器支持:mpa支持多种浏览器,cpshost.dll文件所在目录中的upload.asp页实际上是个浏览器类型判断页,它根据服务器端的browser.ini文件提供的参数判断浏览器类型并转到相应页:uploadx.asp(支持activex的浏览器:如ie4以上)或uploadn.asp(不支持activex的浏览器),uploadn.asp也可用于支持activex的浏览器。

  2.上传目录:web管理者或用户可根据需要在uploadn.asp或uploadx.asp页中指定上传文件的目标目录,此目标目录可与web服务器在不同的物理服务器上,但上传者对此目录一定要有“写入”的权限。缺省状态下,用mpa上传文件时会问用户名和口令,上传的文件会放到“http://(服务器网址)/users/(nt域名)/(用户名)”对应的目录下。子目录“(nt域名)/(用户名)”是自动创建的。另外,最好不要给上传目录的虚拟web目录以“可执行”的权限。


图1 uploadn.asp页

  3.上传文件个数:一次可上传多个文件。如果经常要大批量上传文件,用uploadx.asp页会比较方便———只选一次即可,而用uploadn.asp则每个文件都要选一次。


图2 uploadx.asp页

  4.附加信息:直接调用uploadn.asp,可在此页的表单中增加字段来附加文字资料,在repost.asp页中接收这些信息。上传文件的文件名、大小、存放路径等信息也可在此页中自动取得,聪明的读者一定会想到,要把上传文件的相关信息存入数据库,在此页添加代码即可。

  存在的问题及解决办法

  1.文件改名:直接用mpa上传的文件,只能以原文件名保存到目标目录,当上传文件与目标目录中已有文件重名时,只能简单覆盖。虽然不同用户间由于用户名不同,所以目标目录不同,不会覆盖,但不能保证同一用户自己不覆盖自己的。在iis4中这个问题可以通过filesystemobject(文件系统对象)解决:先把文件上传到一临时目录中,取得文件名,调用filesystemobject来判断目标目录中有无重名文件,再根据情况用filesystemobject实现文件的改名、复制、删除等操作。

  2.对上传加以限制:据微软公司自己称,当上传特大文件时,会使服务器的cpu百分之百被占用,从而停止响应。虽然我们一般不会遇到这种问题,但对上传加以限制,防患于未然还是很有必要的。在注册表的hklmsoftwaremicrosoftwebpostcceptorsshost下有两个键值:

  maximumopentransactions(最大并发事务的个数,缺省值200个)

  opentransactionstimeout(事务处理时间溢出,缺省值600秒)

  可修改其值对上传加以限制。

  3.对附加信息的限制:虽然通过修改uploadn.asp和repost.asp页使我们在文件上传的同时可以附加一些信息,但包括file、targeturl等表单字段在内,所有同上传文件一起发送的表单字段都受如下限制:每个字段不能超过255字节;字段中不能包含半角逗号,否则其后的内容会丢失;字段中不能包含半角空格,半角空格在上传后会丢失。如果一定要传半角逗号和半角空格,可用其它不常用的符号代替,上传后再用replace替换过来,也可让文件和文字分开传。

  4.session的保存:上传过程会使asp的session对象中的数据全部丢失。要保存session中的数据,可在uploadn.asp页的表单中添加一隐藏的表单字段来存放session中的数据。

  5.实现匿名上传:可能是出于安全方面的考虑,缺省状态下,mpa不支持匿名上传,即使删掉asp页头几行的口令验证代码也没用。但我们可通过修改注册表达到这一目的:

  去掉asp页中验证用户名的代码;

  运行regedit.exe(95/98)或regedt32.exe(nt);

  找到hkey_local_machinesoftwaremicrosoftwebpostcceptorsshost;

  增加键值:名称:allowanonymous,类型:reg_dword,值:1;

  重启服务器。

  但这一方法对6.0.86.0版的cpshost.dll无效。(责任编辑Ray)



发表评论】【初学者园地】【科技聊天】【关闭窗口

新 闻 查 询

 相关链接
ASP与数据库运用:密码验证 (2000/10/30 17:49)
三种Web开发主流技术ASP/PHP/JSP评述 (2000/10/20 15:46)


科技时代意见反馈留言板 电话:010-82612286   欢迎批评指正

网站简介 | 用户注册 | 广告服务 | 招聘信息 | 中文阅读 | Richwin | 联系方式 | 帮助信息 | 网站律师

Copyright © 1996 - 2001 SINA.com, Stone Rich Sight. All Rights Reserved

版权所有 四通利方 新浪网