1つ。 ASPに基づくファイルアップロードの実装原則の分析
基本原則は、ADOストリームオブジェクトのバイナリリードメソッドを使用して、フォームのすべてのデータを読み取り、必要なファイルデータをインターセプトし、バイナリファイルに保存します。
Uploadファイルページ(upload.htm)の例を次に示します。
html
ファイルオブジェクトはプログラムで使用されているため、upload.aspのbinaryreadメソッドを使用して読み取られる元のデータは、選択したファイル自体のデータだけでなく、パス、タイプ、フォームドメイン名のドメイン名、およびユーザーのハードディスクに関するその他の関連情報の説明も含まれています。このようにして、ファイルの特定のコンテンツを抽出する必要があります。分析によると、データのヘッダー情報とデータの間の分割線は、2組のキャリッジリターンラインブレークであり、最後に情報を分離しています。同様の方法を使用してファイルデータを取得できます。
dim formdata.formsize、dataStart、clstr、divstrformsize = request.totalbytesformdata = request.binaryread(formsize)clstr = chrb(13)&chrb(10)dataStart = instrb(formdata.clstr&clstr)+4'4 divstr = leftb(formdata、instrb(formdata、clstr)-1)datasize = instrb(datastart+1、formdata、divstr)-datastart-2formdata = midb(formdata、dataStart、datasize)formdataはファイルの内容です。
対応する治療は、中央で必要に応じて実行できます。最後の仕事は、ファイルを保存することです。保存するには2つの方法があります。1つは、VBやVCなどのプログラムでバイナリファイル操作メソッドを使用し、プロジェクトに適切なタイプライブラリを追加し、最終的にDLLファイルにコンパイルし、使用時にDLLファイルを登録することです。ファイルストレージプログラムは次のとおりです。
パブリック関数savefile(pathname as string)as string dim objcontext as objectcontext dim objrequest as request set objcontext = getobjectcontext()set objcontext = objcontext( "request") '次のコードは、ファイルストレージの関連操作です。 datasize = objrequest.totalbytes redim formdata(datasize-1)formdata = objrequest.binaryread(datasize)clstr = chrb(13)&chrb(10)datastart = instrb(formdata、clstr&clstr)+4 divstr = leftb(formdata、grunta、clstr)-1) datasize = instrb(dataStart+1、formdata、divstr)-datastart-2 formdata = midb(formdata、dataStart、datasize) 'formdataを作成して、バイナリのパスネームを開く#1、formdata close#1 savefile = "ok!"エンド関数
2番目の方法は、ADOストリームで提供されるバイナリファイル操作方法を使用してそれを完了することです。ファイルを保存するステートメントは次のとおりです。Streamobj.savetofile(filename、2)。この種の操作では、関連する操作をクラスファイルに保存できます。適用するときは、ASPプログラムにクラスファイルを含めるだけです。特定の処理方法については、関連する紹介を参照してください。