小女巫 发表于 2015-2-3 23:41:06

ASP网页设计ASP无组件上传・从道理分析到理论(中)...

asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.上传|无组件   第五天:失掉文件单位

明天咱们要停止的局部,是对照风趣味性地――失掉文件内容。其实,看看咱们的要处置的数据,再看看前地理本单位的处置,信任人人也会意中无数。

为了明晰的辨别文件和文本单位,这一次,咱们用ourRequest.file(index)来对应文本单位的ourRequest.form(index)。固然,由于关于文件,咱们需求失掉的信息分歧于文本,所以此次失掉的,也不会是FormElement,而是一个新对象FileElement。

文件单位和文本单位在原始数据上,分歧点少得不幸:
1。第一行多了一个filename="xxx"模块;
2。多了一个用于唆使contentType的第二行。

感乐趣的方针信息分歧,所以,失掉的对象FileElement也和FormElement有一些分歧点:
1。不需求count属性(不存在checkbox情形);
2。不需求Item(index)(同上,不存在checkbox情形);
3。需求一个ContentType属性;
4。需求一个FilePath属性;
5。需求一个FileName属性;
6。需求一个Size属性;
7。由于需求的是二进制,所以,没有需要停止二进制=>字符串的转换;
8。由于需求的是二进制,所以,属性Value改成Data更适合

另外,UploadRequest也应当响应的添加Files属性、Form(index)办法、和m_dicFiles成员。如今,咱们就来扩大他:
A。UploadRequest(下面设计过,这里是扩大)
这个类和request对象是对应的
属性:
RawData 失掉原始数据,便利反省[只读]
Forms 失掉一个有count属性的计数器,
可以用outRequest.Forms.Count的体例,失掉文本表单域的的个数[只读]
Files 失掉一个有count属性的计数器,
可以用outRequest.Files.Count的体例,失掉文件表单域的的个数[只读]
Form(index) 可以用数字或文本检索文本表单域,做用相似request.form。
他前往一个FormElement型的对象
File(index) 可以用数字或文本检索文件表单域,他前往一个FileElement型的对象
B。FileElement
可以把它当作单个文件域的化身。经由过程这个类,可以失掉具体的文件信息,好比name,data,path,filename,contentType,size等等。
属性:
Name 文件域的称号。就是<input type=file name=xxx>里的xxx
Data 文件域的内容。二进制串
ContentType 文件域的contentType
FilePath 文件域包括的文件在客户机上的全途径
FileName 文件域包括的文件的文件名
Size 文件域包括的文件的尺寸

这里是完成。仍是存成doupload.asp:
<%
'=========================================================================
'' 这个,是存储文本域信息的的类。每个name的文本域,对应一个如许的类。
'=========================================================================
Class FormElement

' m_开首,暗示类成员变量。
Private m_dicItems

Private Sub Class_Initialize()
Set m_dicItems = Server.CreateObject("Scripting.Dictionary")
End Sub

' count是我们这个类的一个只读属性
Public Property Get Count()
Count = m_dicItems.Count
End Property

' Value是一个默许属性。目标是失掉值
Public Default Property Get Value()
Value = Item("")
End Property

' Name是失掉文本域称号。就是<input name=xxx>里的xxx
Public Property Get Name()
Keys = m_dicItems.Keys
Name = Keys(0)
Name = left(Name,instrrev(Name,"_")-1)
End Property

' Item属性用来失掉重名表单域(好比checkbox)的某一个值
Public Property Get Item(index)
If isNumeric(index) Then '是数字,正当!
If index > m_dicItems.Count-1 Then
err.raise 1,"IndexOutOfBound", "表单位素子集索引越界"
End If
Itms = m_dicItems.Items
Item = Itms(index)
ElseIf index = "" Then '没给值?那就前往一切的!逗号分隔
Itms = m_dicItems.Items
For i = 0 to m_dicItems.Count-1
If i = 0 Then
Item = Itms(0)
Else
Item = Item & "," & Itms(i)
End If
Next
Else '给个一个不是数字的东东?失足!
err.raise 2,"IllegalArgument", "不法的表单位素子集索引"
End If
End Property

Public Sub Add(key, item)
m_dicItems.Add key, item
End Sub

End Class

'=========================================================================
'' 这个,是存储文件域信息的的类。每个name的文件,对应一个如许的类。
'=========================================================================
Class FileElement

' m_开首,暗示类成员变量。
Private m_strName
Private m_bData
Private m_strContentType
Private m_strFilePath
Private m_strFileName
Private m_lSize

' Data是一个默许属性。目标是失掉值
Public Default Property Get Data()
Data = m_bData
End Property

' Name是失掉文件域称号,就是<input type=file name=xxx>里的xxx
Public Property Get Name()
Name = m_strName
End Property

' ContentType是失掉文件contentType
Public Property Get ContentType()
ContentType = m_strContentType
End Property

' FilePath是失掉文件在客户真个途径
Public Property Get FilePath()
FilePath = m_strFilePath
End Property

' FilePath是失掉文件在客户真个途径
Public Property Get FileName()
FileName = m_strFileName
End Property

' Size是失掉文件巨细
Public Property Get Size()
Size = m_lSize
End Property

Public Sub Add(name, data, contenttype, path)
m_strName = name
m_bDat</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。Apache ASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。

若相依 发表于 2015-2-4 06:01:36

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

冷月葬花魂 发表于 2015-2-7 01:49:04

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

山那边是海 发表于 2015-2-19 13:53:01

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

飘灵儿 发表于 2015-3-6 14:55:31

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

海妖 发表于 2015-3-7 03:39:11

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

小妖女 发表于 2015-3-8 10:20:20

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

变相怪杰 发表于 2015-3-15 21:19:14

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

不帅 发表于 2015-3-18 11:30:40

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。

柔情似水 发表于 2015-3-24 01:26:21

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

爱飞 发表于 2015-3-25 02:39:04

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

若天明 发表于 2015-3-28 21:12:46

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

第二个灵魂 发表于 2015-4-3 23:27:50

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

精灵巫婆 发表于 2015-4-21 15:11:03

掌握asp的特性而且一定要知道为什么。

简单生活 发表于 2015-4-22 10:10:17

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

兰色精灵 发表于 2015-4-28 03:01:20

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

金色的骷髅 发表于 2015-5-12 06:33:09

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

分手快乐 发表于 2015-6-27 00:23:07

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

只想知道 发表于 2015-7-1 23:08:29

下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...

再见西城 发表于 2015-7-7 08:12:04

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
页: [1] 2
查看完整版本: ASP网页设计ASP无组件上传・从道理分析到理论(中)...