ASP无组件上传?从原理剖析到实践(中)

第五天:得到文件单元
今天我们要进行的部分,是比较有趣味性地——得到文件内容。其实,看看我们的要处理的数据,再看看前天文本单元的处理,相信大家也会心中有数。
为了清晰的区分文件和文本单元,这一次,我们用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

时间: 2024-09-28 21:17:57

ASP无组件上传?从原理剖析到实践(中)的相关文章

ASP无组件上传·从原理剖析到实践(上)

上传|无组件 无组件上传一直是困扰大家的一个问题.其实原理很简单,核心就是分析字符串.但是,实际操作时,却困难重重.其中的关键问题还是大家往往对原理的剖析不够深入,或者是因为过程过于繁琐,导致bug不断.一直以来,都想做一个完善的例子,只不过想想就头痛,加上没时间(借口,呵呵 ),所以没有付诸行动. 今天就咬咬牙,给大家提供一个完整的无组件上传的例子.因为本人耐性不好,所以咱们一点一点来,分几天完成.未来的几天,我会天天更新这个文档,这个过程也是大家学习和提高的过程. (完整的源码和示例,可以在

ASP无组件上传·从原理剖析到实践(中)

上传|无组件 第五天:得到文件单元 今天我们要进行的部分,是比较有趣味性地--得到文件内容.其实,看看我们的要处理的数据,再看看前天文本单元的处理,相信大家也会心中有数. 为了清晰的区分文件和文本单元,这一次,我们用ourRequest.file(index)来对应文本单元的ourRequest.form(index).当然,因为对于文件,我们需要得到的信息不同于文本,所以这次得到的,也不会是FormElement,而是一个新对象FileElement. 文件单元和文本单元在原始数据上,不同点少

ASP无组件上传·从原理剖析到实践(下)

上传|无组件 第七天:实现附加功能 今天,我们就来实现昨天提出的方法和属性,来完善我们的文件上传类.以前没有太注意的性能问题,这一次也要彻底的解决:1.所有的变量先声明,后使用:2.设置类的teminate方法:3.简化有些地方的写法,注意细节.我们的原则,就是先实现,后优化.当然,象变量声明这样的东西,如果程序很大,最好还是在写程序的时候一次过.如果写完了才加,可以在页面开头加上option explicit(强制变量声明),然后测试所有的方法和属性,直到没有错误为止. 另外,异常代码我们也整

ASP无组件上传?从原理剖析到实践(下)

第七天:实现附加功能今天,我们就来实现昨天提出的方法和属性,来完善我们的文件上传类.以前没有太注意的性能问题,这一次也要彻底的解决:1.所有的变量先声明,后使用:2.设置类的teminate方法:3.简化有些地方的写法,注意细节.我们的原则,就是先实现,后优化.当然,象变量声明这样的东西,如果程序很大,最好还是在写程序的时候一次过.如果写完了才加,可以在页面开头加上option explicit(强制变量声明),然后测试所有的方法和属性,直到没有错误为止.另外,异常代码我们也整理一下:代码 类名

asp无组件上传算法的改进

上传|算法|无组件 前几天帮朋友faintbear修改一个"asp无组件上传"的代码,得了几点心得,写在此处,或许还有点用处. 我没有开发过asp程序,只是临时报佛脚,修改了一下控制语句,所以,这里不再给出asp代码,只是说明一下思路.(你最好在看这篇文章前先浏览一下faintbear的<asp无组件上传的原理 (转) >这篇文章,重复的部分我不再叙述了) 大体是这样的,一个form表单中可能post多个文本,居各简单的例子:<form method="po

Asp无组件上传带进度条(续)

上传|无组件 几个月前,写过一篇关于Asp无组件上传带进度条的Blog,当时主要分析了一下通过Web文件上传并在后台获取分析数据的实现原理.其中实现进度条的根本就是要实现分块获取数据,根据分块大小和块数记录已上传大小.还有一些具体的细节问题当时并没有说清楚: Q: 进度信息如何访问?A: 进度信息保存在Application中,每次上传时生成一个进度ID,根据这个进度ID可以检索Application中的当前上传进度信息. Q: 进度信息以什么形式保存在Application中?A: Asp太弱

Asp无组件上传进度条解决方案

解决|上传|无组件 一.无组件上传的原理我还是一点一点用一个实例来说明的吧,客户端HTML如下.要浏览上传附件,我们通过<input type="file">元素,但是一定要注意必须设置form的enctype属性为"multipart/form-data": <form method="post" action="upload.asp" enctype="multipart/form-data&q

Asp无组件上传进度条解决方案_应用技巧

一.无组件上传的原理我还是一点一点用一个实例来说明的吧,客户端HTML如下.要浏览上传附件,我们通过<input type="file">元素,但是一定要注意必须设置form的enctype属性为"multipart/form-data": <form method="post" action="upload.asp" enctype="multipart/form-data">&l

ASP实例:一个简单的ASP无组件上传类

简单的ASP无组件上传类,发出来让大家看看.可以做做实验! 以下为引用的内容: <%@ language="javascript"%><%var self = Request.serverVariables("SCRIPT_NAME");if (Request.serverVariables("REQUEST_METHOD")=="POST"){        var oo = new uploadFile(