马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;上传|无组件第七天:完成附加功效
明天,我们就来完成今天提出的办法和属性,来完美我们的文件上传类。之前没有太注重的功能成绩,这一次也要完全的办理:
1。一切的变量先声明,后利用;
2。设置类的teminate办法;
3。简化有些中央的写法,注重细节。
我们的准绳,就是先完成,后优化。固然,象变量声明如许的器材,假如程序很年夜,最好仍是在写程序的时分一次过。假如写完了才加,能够在页面开首加上optionexplicit(强迫变量声明),然后测试一切的办法和属性,直到没有毛病为止。
别的,非常代码我们也收拾一下:
代码类名范例形貌
==============================================================================
11FormElementIndexOutOfBound表单位素子集索引越界
12FormElementIllegalArgument不法的表单位素子集索引
21UploadRequestIndexOutOfBound文本元素索引越界
22UploadRequestIllegalArgument不法的文本元素索引
23UploadRequestIndexOutOfBound文件元素索引越界
24UploadRequestNullRef文件元素索引不存在
25UploadRequestIllegalArgument不法的表单位素索引
26UploadRequestTooLargeFile文件%fldname尺寸过年夜
27UploadRequestTooLargeFiles文件总尺寸过年夜
28UploadRequestInvalidFileType文件%fldname范例毛病
好了,上面的,就是我们的全部完成了:
1。com.2yup.util.uploadrequest.class
<%
没有版权,接待拷贝或是作为贸易用处。
假如要转载,能说明出处最好,我们会很感谢您的撑持;假如不便利,就算了,呵呵。
感激列位常来2yup的网友(良多名字,写不下了,呵呵)临时热忱的撑持,
你们是我耐久的动力。
关于这个组件的具体信息,和编程的全历程,能够来
http://www.2yup.com/asp
的文档中央看个事实。有任何疑问,接待来我们的论坛会商,或是给我发email:
miles2yup@hotmail.com
----Miles[YupStudio]^^
=========================================================================
这个,是存储文本域信息的的类。每个name的文本域,对应一个如许的类。
=========================================================================
ClassFormElement
m_开首,暗示类成员变量。
Privatem_dicItems
PrivateSubClass_Initialize()
Setm_dicItems=Server.CreateObject("Scripting.Dictionary")
EndSub
setnothing时引发。清算资本
PrivateSubClass_Terminate()
Setm_dicItems=Nothing
EndSub
count是我们这个类的一个只读属性
PublicPropertyGetCount()
Count=m_dicItems.Count
EndProperty
Value是一个默许属性。目标是失掉值
PublicDefaultPropertyGetValue()
Value=Item("")
EndProperty
Name是失掉文本域称号。就是<inputname=xxx>里的xxx
PublicPropertyGetName()
DimKeys
Keys=m_dicItems.Keys
Name=Keys(0)
Name=left(Name,instrrev(Name,"_")-1)
EndProperty
Item属性用来失掉重名表单域(好比checkbox)的某一个值
PublicPropertyGetItem(index)
DimItems,i
IfisNumeric(index)Then是数字,正当!
Ifindex>m_dicItems.Count-1Then
err.raise11,"IndexOutOfBound","表单位素子集索引越界"
EndIf
Items=m_dicItems.Items
Item=Items(index)
ElseIfindex=""Then没给值?那就前往一切的!逗号分开
Items=m_dicItems.Items
Fori=0tom_dicItems.Count-1
Ifi=0Then
Item=Items(0)
Else
Item=Item&","&Items(i)
EndIf
Next
Else给个一个不是数字的东东?堕落!
err.raise12,"IllegalArgument","不法的表单位素子集索引"
EndIf
EndProperty
PublicSubAdd(key,item)
m_dicItems.Addkey,item
EndSub
EndClass
=========================================================================
这个,是存储文件域信息的的类。每个name的文件,对应一个如许的类。
=========================================================================
ClassFileElement
m_开首,暗示类成员变量。
Privatem_strName
Privatem_bData
Privatem_bRawData
Privatem_strContentType
Privatem_strFilePath
Privatem_strFileName
Privatem_lSize
Data是一个默许属性。目标是失掉值
PublicDefaultPropertyGetData()
Data=m_bData
EndProperty
这个属性很为难――stream工具write办法请求的数据范例是
"AVariantthatcontainsanarrayofbytestobewritten."
可是我却没法从一个二进制串中失掉这个数据范例!切实其实很奇异。以是,我盘算
利用切合请求的原始数据m_bRawData。可是,vbs的类功效少得不幸,既不克不及传送
以后工具的援用往返访UploadRequest的m_bRawData也不克不及用innerclass的方
法举行构造。为了坚持办法的简便,以是加了这个只写的RawData属性。
这个中央很值得改善。
PublicPropertyLetRawData(data)
m_bRawData=data
EndProperty
Name是失掉文件域称号,就是<inputtype=filename=xxx>里的xxx
PublicPropertyGetName()
Name=m_strName
EndProperty
ContentType是失掉文件contentType
PublicPro</p>ASP脚本是采用明文(plaintext)方式来编写的。 |