📄 深入研究“用asp上载文件”.txt
字号:
现在就PA和SA-FileUp进行一个尽可能客观的比较:
■ 与ASP的结合性:SA-FileUp在ASP中是完全可脚本化的,它可以与ASP应用程序很好地结合起来, 而不是作为一个独立的ISAPI DLL存在。
■ 标准支持性:从IE浏览器进行PA上载要使用其特有的WebPost API,所以不如RFC1867, 使用PA,对于Netscape和IE用户要使用不同的格式。
■ 匿名连接:由于PA使用一个ISAPI DLL,在ASP应用程序以外它就必须提供额外的安全保护。因此在默认状态下PA不允许一切匿名连接。PA 1.1可以允许匿名上载,但是因为有一个上载的编程控制,这里仍然有一定的危险。由于SA-FileUp已经和ASP结合在一起,应用程序可以决定适当的安全度,包括匿名。
■ 上载控制:上载正在发送时,PA不允许任何控制。但是用SA-FileUp,可以限制上载的规模或实时决定取消上载。而最好的一点在于可以动态改变上载的位置。
■ 处理过程:PA有两步:上载和重新投递。用SA-FileUp,一切都可以一步完成,例如根据上载的状态写数据库。
■ 上载到一个数据库:PA只能上载到文件,SA-FileUp可上载到文件和数据库。
■ “文件名中的空格”:当处理含有空格的文件名时,PA存在问题;SA-FileUp就没有这样的漏洞。
■ 价格:PA可从Microsoft免费下载,与NT选项软择包捆绑在一起。而SA-FileUp不是免费的:它是有支持的商业组件。
Vertigo Software的总裁Scott Stanfield(http://www.vertigosoftware.com/), 是MIND杂志98年7月号上Post Accetpor文章的作者,MIND上的文章发表之后,在 Software Artisans 上关于SA-FileUp,他又写道:“知道了[SA-FileUp]非常兴奋,这真是奇妙而有价值的产品。”
共同的支持问题
到现在为止,有关文件上载的支持问题主要是与安全有关的。通常网站都过分小心地保护NTFS 许可,它可以防止匿名用户帐号向文件目的地址中进行写入。而且即使是 高级服务器管理员也经常错误理解安全的含义。
要记住,IIS/ASP在一个特别的安全环境下运行每个ASP页。如果没有鉴别机制(没有Basic,没有NT Challenge/Response),每一页都作为匿名用户执行。网络管理员可以设置与匿名用户相应的NT帐号。
对于IIS3,默认的匿名用户是IUSR_< computername >。
对于IIS4,所有运行中的网络应用程序的默认匿名用户都是IUSR_< computername >(“在单独的内存空间运行”不被查看)。所有运行以外的应用程序的默认匿名用户是 IWAM_< computername > (“在单独的内存空间运行”被查看)。
使用SA-FileUp时,必须保证适当的用户对目的路径有读、写、删除许可。
如果鉴别功能发挥作用,在运行ASP页的过程中IIS/ASP 就将扮演已经鉴别的用户。 因此经鉴别用户的注册帐号对目的路径必须有读、写、删除许可。
对IIS安全的深入讨论已经超过了本文的范围,the IIS 4 Resource Kit有很好的解释。
一些代码
理论已经足够了,下面来看一些ASP代码。
单个文件上载
下面是单个文件上载的一个简单的HTML格式。
< HTML > < HEAD > < TITLE >Please Upload Your File< /TITLE >
< /HEAD > < BODY > < form enctype="multipart/form-data" method="post" action="formresp.asp" >
Enter filename to upload: < input type="file" name="f1" > < input type="submit" > < /form > < /BODY > < /HTML >
下面是文件'formresp.asp':
< %@ LANGUAGE="VBSCRIPT" % >
< HTML >< HEAD > < TITLE >Upload File Results< /TITLE > < /HEAD >
< BODY > Thank you for uploading your file.
< % Set upl = Server.CreateObject("SoftArtisans.FileUp") % >
< % upl.SaveAs "C: empupload.out" % >
Total Bytes Written: < %=upl.TotalBytes% >
< /BODY > < /HTML >
有附加表单元素的文件上载
增加附加表单元素非常简单。只要正确指定ENCTYPE,它就象任何普通HTML文件一样运行。
< HTML > < HEAD > < TITLE >Please Upload Your File< /TITLE >
< /HEAD > < BODY >
< form enctype="multipart/form-data" method="post" action="mformresp.asp" >
Enter description: < input type="text" name="descrip" > Enter filename to upload: < input type="file" name="f1" > < input type="submit" > < /form >
< /BODY > < /HTML >
下面是文件'mformresp.asp':
< %@ LANGUAGE="VBSCRIPT" % > < HTML >< HEAD > < TITLE >Upload
File Results< /TITLE > < /HEAD >
< BODY >
Thank you for uploading your file. < % Set upl = Server.CreateObject("SoftArtisans.FileUp") % >
< % upl.SaveAs "C: empupload.out" % > Your description is: '< %=upl.Form("descrip")% >' Total Bytes Written: < %=upl.TotalBytes% >
< /BODY > < /HTML >
多文件上载
由于浏览器不支持SIZE= 属性,对多文件的情况就必须在每个文件中都使用一个额外的< INPUT >语句。
Enter first filename: < input type="file" name="f1" > Enter second filename: < input type="file" name="f2" >
格式处理是一样的:
< %@ LANGUAGE="VBSCRIPT" % > < HTML >< HEAD >
< TITLE >Multiple File Upload Results< /TITLE > < /HEAD >
< BODY >
Thank you for uploading your files. < % Set upl = Server.CreateObject("SoftArtisans.FileUp") % > < % upl.Form("f1").SaveAs "C: empupload1.out" % > Total Bytes Written for file 1: < %=upl.Form("f1").TotalBytes% > < % upl.Form("f2").SaveAs "C: empupload2.out" % > Total Bytes Written for file 2: < %=upl.Form("f2").TotalBytes% > < /BODY > < /HTML >
限制上载规模
要限制上载规模,只需要设置一个属性:
< %@ LANGUAGE="VBSCRIPT" % > < HTML >< HEAD > < TITLE >Upload File Results< /TITLE > < /HEAD > < BODY > Thank you for uploading your file. < % Set upl = Server.CreateObject("SoftArtisans.FileUp") % > < % upl.MaxBytes = 1000 '--- limit the upload size to 1000 bytes % > The maximum size that you are permitted to upload is < %=upl.MaxBytes% > bytes per file. < % upl.SaveAs "C: empupload.out" % > Total Bytes Written: < %=upl.TotalBytes% > Server Filename: < %=upl.ServerName% > Total Bytes Transmitted by you: < %=Request.TotalBytes% > < /BODY > < /HTML >
第1000个字节后的内容都将被删除,WEB服务器的磁盘就不会不必要地被占满。
结论
在WEB应用程序中实现上载文件非常简单:区区两行ASP代码就能完成。HTTP/RFC1867文件上载因服务器提供的丰富的编程环境成为首选。SA-FileUp作为与ASP结合的活动服务器组件,比Microsoft的Posting Accetpro有明显优势。
--------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -