|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。上传|上传图片|无组件 上面是ASP无组件上传图片的一个例子:
<html>
<head><title>文件上传</title></head>
<body>
<formenctype="multipart/form-data"action="upload.asp"method="post">
请选择要上传的文件:<br>
<inputname="picture"type=fileaccept="image/*"><br>
<inputtype=submitvalue="上传"></form>
</body>
</html>
当html文件在NetscapeNavigator(3.0以上版本)或InternetExplorer(4.0以上版本)下显现时,“扫瞄”键中间会呈现一个看上往很一般的文本框。用户可间接将文件名键进文本框,或用“扫瞄”键从文件对话框当选择一个文件。提交该表单时,用户所选文件被同时提交。
<form>标签的enctype特性划定了哀求表单信息的编码范例。表单信息一样平常接纳URL编码制。不外上传文件时,必需用enctype="multipart/form-data"特性。
实践的文件上载键用上面的标签创立:
<inputname="picture"type=fileaccept="image/*">
由于type的特性值是file,以是扫瞄器会创立一个文件上载键。accept特性限定了在文件对话框中呈现的特定文件,这类情形下文件范例限定为图文件。能够划定任何MIME范例的清单作为accept的特性值。
文件上载键十分有效,遗憾的是很多扫瞄器只是部分撑持上载键。比方NetscapeNavigator(3.0及4.0版本)疏忽了accept特性,IE3.0版本乃至更差,它完整不克不及注释上载键,而是显现一般的文本框。不外IE4.0和5.0版本可辨认文件上载键。
创立带文件上载键的html表单只是上传文件的第一步,提交带上载键的文件不克不及用request工具的一般办法取得文件内容。ASP中request工具有专门用作此目标的特别办法。当表单被邮递后,request工具的BinaryRead()办法用来读取提交的原始字节。注重:一旦在ASP中利用了BinaryRead()办法,就不克不及用一般的Request.Form()办法猎取表双数据了(反之亦然)。
假定用户利用后面提到的表单提交了一幅图片,那末能够用上面的剧本猎取并显现提交的原始字节。
<%
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
Response.BinaryWriteFormData
%>
下面的剧本用Request工具的TotalBytes特性猎取送进http站点的字节数。然后,一切的表双数据被赋给名为FormData的变量。最初用Response工具的BinaryRead()办法输入上载的数据内容。
可是用这类办法输入的剧本不是完整可读的,它包括上载文件的一切原始数据及有关该文件内容的主要信息。
失掉数据后能够保留在数据库中、文件中或仅仅显现它,乃至能够疾速地改动原始图象数据来创立定制图象。上面的剧本往失落了文件头,并显现作为图象在扫瞄器上载的文件。
<%
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
bnCRLF=chrB(13)&chrB(10)
Divider=LEFTB(FormData,INSTRB(FormData,bnCRLF)-1)
DataStart=INSTRB(FormData,bnCRLF&bnCRLF)+4
DataEnd=INSTRB(DataStart+1,FormData,divider)-DataStart
Response.ContentType="image/gif"
Response.BinaryWriteMIDB(FormData,DataStart,DataEnd)
%>
下面的剧本用INSTRB()函数从表双数据中摘出图像数据,找到肇端地位。它假定图像数据以两个回车和换行符入手下手,并以一样的分开符停止。然后用Response工具的ContenType划定送进扫瞄器的内容是GIF图像。最初用BinaryWrite()办法输入数据。图片就显现在扫瞄器上。
下面的剧本假定提交的表单只包括一个含有图象数据的域。不外包括文件上载元素的html表单还可包括其他尺度元素,比方文本框、文本区等。
只管能够用尺度的ASP剧本处置庞大的表单,但最好仍是利用第三方ASP组件,能够用与处置尺度html表单的不异办法,处置包括文件上载元素的表单。
</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|