当前位置: 首页 > 图文教程 > 网络编程 > ASP > 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据

ASP
Adodb.Command 平时很少注意到的一个参数
Asp.Net控件加载错误的解决方法
远程连接access数据库的方法
创建具有JScript的HTML的XMLHTTP
在Asp中如何快速优化分页的技巧
用VB生成DLL封装ASP代码,连接数据库
RS.OPEN SQL,CONN,A,B 全接触
利用adodb.stream直接下载任何后缀的文件(防盗链)
用ASP编程控制在IIS建立Web站点的程序代码
使用VBScript操作Html复选框(CheckBox)控件
把文章内容中涉及到的图片自动保存到本地服务器
两个不同数据库表的分页显示解决方案
使用组件封装数据库操作(一)
使用组件封装数据库操作(二)
如何在pb中创建COM组件,并在asp中调用并返回结果集?
用ASP和Microsoft.XMLDOM分析远程XML文件
浅谈无刷新取得远程数据技术
将ASP纪录集输出成n列的的表格形式显示的方法
在ASP中通过oo4o连接Oracle数据库的例子
Server Application Error详细解决办法

ASP 中的 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 257 ::
收藏到网摘: n/a

通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据的代码说明。
复制代码 代码如下:

<input name="file" type="file">
formsize=request.totalbytes
formdata=request.binaryread(formsize)
bncrlf=chrB(13) & chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)

formsize=request.totalbytes
取得上传的最大字节数
-----------------------
formdata=request.binaryread(formsize)
取得二进制流的表单form数据
-----------------------
bncrlf=chrB(13) & chrB(10)
设定crlf 回车换行代码变量
------------------------------
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
取得第一个crlf左边的字节数据
instrb(formdata,bncrlf)-1机检查出crlf二进制字节的位值减一,即为该标志位信息之前的二进制数据,需要说明的是instrb返回的是clng,所以此处加了一个clng是多余的
------------------------------
datastart=instrb(formdata,bncrlf & bncrlf)+4
取得图象数据,去除form表单添加的头信息的启始位置,也就是你的type=file在form提交后的真正文件数据的字节起始位置
二个连续crlf的位置+4(即而个crlfg的长度)
-------------------------------
dataend=instrb(datastart+1,formdata,divider)-datastart
从上的取得的数据位置+1做为检查数据结尾的参考计算值,在datastart+1开始的位置检测返回第一个二进制form分隔头信息的位置,再减去datastar的相对位置
----------------------------
mydata=midb(formdata,datastart,dataend)
midb()取以上多番周折取得的上传文件数据的star end位制的数据
ok --------------> 现在干干净净的提取出上传的二级制数据
注:
(1).所有 *B系列的VB函数均是按字节byte来处理,处理二级制必须用他们
(2).type=file 和 相应的form类型的表单数据提交后均对每个文件域附加有相应的头信息
所以必须按上面的算法来明确找到真正的文件数据
(3).同时头信息里还包含上传初始文件名的数据如 c:\aaa\aaa.jpg,可以同样处理formdata的数据而提取该段文件域数据的初试文件名
(4).这些算法是来源于http“form”规范提供的格式数据,所以任何一家的处理算法都是大同小异的!