程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 通過表單的做為二進制文件上傳request.totalbytes提取出上傳的二級制數據

通過表單的做為二進制文件上傳request.totalbytes提取出上傳的二級制數據

編輯:關於ASP編程
復制代碼 代碼如下:
<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”規范提供的格式數據,所以任何一家的處理算法都是大同小異的!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved