仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1671|回复: 18
打印 上一主题 下一主题

[学习教程] ASP网页设计用VB6做一个复杂的文件上传组件(一)

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:28:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧   比来在单元做的一个项目里需求有文件上传的功效,正好手头一本书的附赠光盘里有一个上传组件,心中大喜。惋惜随之便发明这是一个试用版,不给钱就只能用50次,太吝啬了!!好在头头催得不紧,工夫丰裕,爽性本人试着做一个,既可长经历值,又能长成绩感,不试白不试!以下引见的即是俺折腾了两天半捣鼓出来的一个只能说是雏形的玩意,戋戋三十行代码,大侠们不要笑俺哦,这只是写授与俺一样猎奇心强但经历值低的弟兄们看的。
    文件上载所需的第一步固然是进入一个有“file”表单位素的页面,详细就不说了,人人都晓得。然而若想做一个可以承受该文件而且将其保留到办事器硬盘上的组件,必需晓得所提交的原始数据的怎样一个容貌才行。做到这一点其实不难:
    <%
      Dim FormData,FormSize
      FormSize=Request.TotalBytes
      FormData=Request.BinaryRead(FormSize)
      Response.BinaryWrite FormData
    %>
    由于需求读取的是前一个页面提交来的原始字节数据,因而不克不及利用Request.Form()办法,必需利用BinaryRead办法,而且一旦利用了这个办法,就不克不及再在统一个页面中利用Form()办法了,反之亦然。基于一样的事理,向页面输入时也必需利用BinaryWrite办法,不外这其实不妨害你持续利用Response.Write办法。
    鄙人面的描写中假定阅读者选择上传的文件是一个GIF图片,你会发明这段代码运转的了局并非在阅读器上显示出这幅图片,而只是输入了一堆根基上是七零八落的字符:

-----------------------------7ce20d227c0232
Content-Disposition: form-data; name="file"; filename="C:\mypic.gif"
Content-Type: image/gif

GIF89a    ??!?{7iv}$挝顿排湃缺哪浇爬⒖咯技Φ档北发创虐{x勃ゥノ味偎排湃缺哪浇爬⒖咯技Φ档北发创虐{x勃ゥゥ|x|Zr?Zxt??p{{{zzszzlsssnarrjjjrreccfffdXfffddjj^fffddZ__UZZZYYSWWMRRRRRJ_BBKKK?IIB? ??W::AAA?S;?-----------------------------7ce20d227c0232--

    不奇异,这就对了!由于原始数据其实不仅仅是图片文件自己的数据,它还包括有对该文件在用户硬盘上的途径、类型、提交页面的表单域名等相干信息的描写,和头尾两段根基不异的标识(即“-----------------------------7ce20d227c0232”),我想这对标识应当是在表单中含有多个元素时起朋分感化的。两头的那段数据,即以“GIF89a”开首,直到最初一个“;”,才是咱们所想失掉的GIF图片文件的数据。若想让阅读器可以显示出这幅图片,固然得先把这些不需求的内容去失落再向页面输入。因而上面该做些甚么就很了然了。
    第一步,掐头:
    “头”与图片数据的分界限就是两对回车换行符(在阅读器中是看不到“GIF89a”之前的谁人空白行的,得把输入了局粘贴到写字板里去研讨,记事本也不可)。
    Dim DataStart,CLStr
    CLStr=ChrB(13) & ChrB(10)
    DataStart=InStrB(FormData,CLStr & CLStr)+4
    个中的4是两对回车换行符的长度,别的要注重这里都是在针对字节数据停止操作,而不是字符,因而不要用错了函数,少敲了个“B”就完整得不到准确了局了。
    第二步,去尾:
    “头”有多大算是弄清了,那尾呢?不急,先获得开首那段标识的详细内容,注重它的开头处是一对回车换行符:
    Dim DivStr
    DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
    由于咱们将要利用MidB办法截取图片数据,所以接上去需求弄清晰整段图片数据的字节数,就用后面已界说了的DataSize变量:
    DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
    为何要减2呢?由于末尾那段标识之前也有一对回车换行符。至此,图片数据即可以很等闲地失掉并在阅读器上输入了:
    FormData=MidB(FormData,DataStart,DataSize)
    Response.BinaryWrite FormData
    不外我想你必定不会知足于到此为止的,由于还没有存盘呢!固然我也不会做到这里便出工,不然是没法向头头交差的。后面所切磋的这些内容都还只局限在地道的ASP剧本法式局限内,并没有触及到组件手艺。其实我一入手下手并没有想向这方面勉力,只想靠ASP处理成绩,惋惜FileSystemObject没告知我它可以往硬盘上写二进制文件,在这个服装论坛上问了半天也没人睬我,只好本人下手编组件了。
    不外接上去的进程其实不像想象中的那样困难。
    所要做的这个组件的功效很复杂,只供应了一个办法:SaveFile(Pathname),在这个办法内,法式起首获得上传页面所提交的文件的字节数据,就象前文所述的剧本法式一样,然后再将这些数据写到办事器硬盘上由参数Pathname所指定的一个二进制文件内,一切便半途而废了,至于若何使这个组件进一步完美些,呵呵,今后渐渐来吧。
    详细怎样做呢?翻开VB,然后请听下回分化。
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多. 纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码
只想知道 该用户已被删除
沙发
发表于 2015-2-3 23:32:12 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
飘飘悠悠 该用户已被删除
板凳
发表于 2015-2-11 09:15:35 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
简单生活 该用户已被删除
地板
发表于 2015-2-12 03:21:32 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
分手快乐 该用户已被删除
5#
发表于 2015-2-13 04:43:04 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
老尸 该用户已被删除
6#
发表于 2015-2-28 13:53:30 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
柔情似水 该用户已被删除
7#
发表于 2015-3-3 11:23:50 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-5 08:46:27 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-12 02:10:46 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-25 13:16:46 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小妖女 该用户已被删除
11#
发表于 2015-3-28 05:06:19 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
再现理想 该用户已被删除
12#
发表于 2015-3-31 17:48:11 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
小女巫 该用户已被删除
13#
发表于 2015-4-11 09:16:09 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
深爱那片海 该用户已被删除
14#
发表于 2015-4-13 15:19:52 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
乐观 该用户已被删除
15#
发表于 2015-4-16 01:11:30 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
小魔女 该用户已被删除
16#
发表于 2015-4-25 13:09:53 | 只看该作者
那么,ASP.Net有哪些改进呢?
飘灵儿 该用户已被删除
17#
发表于 2015-4-27 18:06:45 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
山那边是海 该用户已被删除
18#
发表于 2015-6-15 08:29:48 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
莫相离 该用户已被删除
19#
发表于 2015-7-5 01:37:29 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-13 15:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表