通過表單的做為二進(jìn)制文件上傳request.totalbytes提取出上傳的二級制數(shù)據(jù)
更新時間:2009年09月17日 14:17:57 作者:
通過表單的做為二進(jìn)制文件上傳request.totalbytes提取出上傳的二級制數(shù)據(jù)的代碼說明。
復(fù)制代碼 代碼如下:
<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
取得上傳的最大字節(jié)數(shù)
-----------------------
formdata=request.binaryread(formsize)
取得二進(jìn)制流的表單form數(shù)據(jù)
-----------------------
bncrlf=chrB(13) & chrB(10)
設(shè)定crlf 回車換行代碼變量
------------------------------
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
取得第一個crlf左邊的字節(jié)數(shù)據(jù)
instrb(formdata,bncrlf)-1機(jī)檢查出crlf二進(jìn)制字節(jié)的位值減一,即為該標(biāo)志位信息之前的二進(jìn)制數(shù)據(jù),需要說明的是instrb返回的是clng,所以此處加了一個clng是多余的
------------------------------
datastart=instrb(formdata,bncrlf & bncrlf)+4
取得圖象數(shù)據(jù),去除form表單添加的頭信息的啟始位置,也就是你的type=file在form提交后的真正文件數(shù)據(jù)的字節(jié)起始位置
二個連續(xù)crlf的位置+4(即而個crlfg的長度)
-------------------------------
dataend=instrb(datastart+1,formdata,divider)-datastart
從上的取得的數(shù)據(jù)位置+1做為檢查數(shù)據(jù)結(jié)尾的參考計算值,在datastart+1開始的位置檢測返回第一個二進(jìn)制form分隔頭信息的位置,再減去datastar的相對位置
----------------------------
mydata=midb(formdata,datastart,dataend)
midb()取以上多番周折取得的上傳文件數(shù)據(jù)的star end位制的數(shù)據(jù)
ok --------------> 現(xiàn)在干干凈凈的提取出上傳的二級制數(shù)據(jù)
注:
(1).所有 *B系列的VB函數(shù)均是按字節(jié)byte來處理,處理二級制必須用他們
(2).type=file 和 相應(yīng)的form類型的表單數(shù)據(jù)提交后均對每個文件域附加有相應(yīng)的頭信息
所以必須按上面的算法來明確找到真正的文件數(shù)據(jù)
(3).同時頭信息里還包含上傳初始文件名的數(shù)據(jù)如 c:\aaa\aaa.jpg,可以同樣處理formdata的數(shù)據(jù)而提取該段文件域數(shù)據(jù)的初試文件名
(4).這些算法是來源于http“form”規(guī)范提供的格式數(shù)據(jù),所以任何一家的處理算法都是大同小異的!
相關(guān)文章
asp實現(xiàn)防止從外部提交數(shù)據(jù)的三種方法腳本之家補充
這篇文章主要介紹了asp實現(xiàn)防止從外部提交數(shù)據(jù)的三種方法,需要的朋友可以參考下2007-11-11ASP生成靜態(tài)文件編碼為UTF-8格式的HTML文件
ASP生成靜態(tài)文件編碼為UTF-8格式的HTML文件...2007-10-10Microsoft VBScript 編譯器錯誤 錯誤 ''800a03e9'' 內(nèi)存不夠的解決方法
今天訪問后臺的時候提示Microsoft VBScript 編譯器錯誤 錯誤 '800a03e9' 內(nèi)存不夠,通過下面的方法簡單修復(fù)了下,特分享下,方便需要的朋友2015-07-07