アップロードされた二次データのコード記述を、アップロード request.totalbytes 形式を通じてバイナリ ファイルとして抽出します。
次のようにコードをコピーします。
<input type="ファイル">
formsize=request.totalbytes
formdata=request.binaryread(フォームサイズ)
bncrlf=chrB(13) & chrB(10)
ディバイダ=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf & bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(フォームデータ,データ開始,データ終了)
formsize=request.totalbytes
アップロードされた最大バイト数を取得する
------------------------
formdata=request.binaryread(フォームサイズ)
バイナリストリームからフォームデータを取得する
------------------------
bncrlf=chrB(13) & chrB(10)
crlf キャリッジ リターンおよびライン フィード コード変数を設定します
----------------------------------
ディバイダ=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
最初の crlf の左側のバイト データを取得します
instrb(formdata,bncrlf)-1 マシンは、フラグ情報の前のバイナリ データである crlf バイナリ バイトのビット値がマイナス 1 であることを確認します。instrb は clng を返すため、ここに clng が追加されます。冗長な
----------------------------------
datastart=instrb(formdata,bncrlf & bncrlf)+4
画像データを取得し、フォーム form によって追加されたヘッダー情報の開始位置を削除します。これは、type=file がフォームに送信された後の実際のファイル データのバイト開始位置です。
連続する 2 つの crlfs の位置 + 4 (つまり、2 つの crlfg の長さ)
----------------------------------
dataend=instrb(datastart+1,formdata,divider)-datastart
上記で求めたデータ位置+1を基準計算値としてデータの終端を確認し、datastart+1から先頭のバイナリ形式デリミタヘッダ情報の位置を返します。データスターの値が減算されます。
----------------------------
mydata=midb(フォームデータ,データ開始,データ終了)
midb() は、紆余曲折を経て得られたアップロードファイルデータのスターエンドビット形式をとります。
OK -> アップロードされた二次データをきれいに抽出します
注記:
(1). すべての *B シリーズ VB 関数はバイト単位で処理され、セカンダリ システムを処理するために使用される必要があります。
(2) .type=file と対応するフォームタイプのフォームデータを送信すると、ファイルの各フィールドに対応するヘッダ情報が付加されます。
したがって、実際のファイル データを明確に見つけるには、上記のアルゴリズムを使用する必要があります。
(3) 同時に、ヘッダー情報には、アップロードされた初期ファイル名 (c:/aaa/aaa.jpg など) のデータも含まれています。formdata データを同様に処理して、仮のファイル名を抽出できます。ファイルドメインデータの。
(4). これらのアルゴリズムは http の「フォーム」仕様によって提供される形式データから派生しているため、どの会社の処理アルゴリズムも似ています。