通过网页实现文件上传

来源:百度文库 编辑:神马文学网 时间:2024/04/29 11:00:15
新浪首页●免费邮件●用户注册●网站地图
上移动梦网赢手机大奖

新浪首页 >科技时代 >网上学园 >主页制作 > 正文

通过网页实现文件上传
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
版权所有 四通利方 新浪网
_xyz