动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP实例 ]的信息



本月文章推荐
.用ASP开发WEB日期选择器.
.用asp.net写的论坛程序--浏览贴及.
.用XML+FSO+JS实现服务器端文件的.
.如何用SAFileUp上传文件?.
.在ASP应用中验证用户身份(2).
.用ASP制作个性化的调查板(附源程.
.用户注册及跟踪代码(二).
.网络寻呼机数据库版总结.
.网络寻呼机数据库版隐藏文件watc.
.构建稳定的服务器端组件的七个步.
.数组数据排序的程序例子.
.一个提供用户输入时期的绝好程序.
.下拉框连动的小例子(数据库版).
.FrontPage创建HTML/ASP混合页面.
.利用ASP实现三个强大功能之二.
.ASP进阶之文章在线管理更新(7).
.使用AspImage制作图形(一).
.ASP操作XML文件的完整实例.
.使用w3Sockets组件实现域名查询功.
.制作我们自己的Ebay(拍卖系统)(9).

用VB6做一个简单的文件上传组件(一)

发表日期:2000-10-20 |


最近在单位做的一个项目里需要有文件上传的功能,正好手头一本书的附赠光盘里有一个上传组件,心中大喜。可惜随之便发现这是一个试用版,不给钱就只能用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    垐??!?倇挌7昳聉}$挝顿藶排湃缺哪浇爬⒖咯技Φ档北发创熍皗獂勃姰畾棩ゥ挝顿藶排湃缺哪浇爬⒖咯技Φ档北发创熍皗獂勃姰畾棩ゥゥ挗|櫃櫇潒櫃嚈櫃殦x敂儘崓潅倢寍檱Z杹r?杽Z剟剠厁儍t??p{{{zzszzlsss媙arrj僯jrreccfff乨Xfffddjj^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,然后请听下回分解。

上一篇:趣味访客计数器设计两则 人气:11023
下一篇:用VB6做一个简单的文件上传组件(二) 人气:14141
浏览全部上传组件的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-19 Roclog v3.1.4 SP1
2008-7-19 马克斯CMS(Maxcms) v1.1 Build 0
2008-7-19 乐学LBBS无限级目录图片直读系统
2008-7-19 PHP在线考试系统PPExam v1.2.5
2008-7-19 APJE私服发布系统 v2.0
2008-7-19 寻觅图书管理系统 v1.12
2008-7-19 寻觅学校管理系统
2008-7-19 义乌网站目录baidu新闻订阅 v1.0
2008-7-19 牛仔IIS日志蜘蛛爬行记录分析器
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵