LoginSignup
1
0

More than 3 years have passed since last update.

Classic ASPでファイルアップローダーを作る

Posted at

やりたいこと

Classic ASPでファイルアップローダーを作る。

BASP21ライブラリなしでできないか?

こちらのサイトに解説がありました。
送信されたバイナリの改行コードからフォーム情報を特定する方法でした。

フォーム項目が多いほど、改行位置からの特定が難しくなるのでBASP21を使った方が適切だと思います。

環境・ツール

  • Windows Server 2016
  • IIS
  • VBScript
  • BASP21

BASPのダウンロード・インストール

BASP21Down Load! Bsmtp20070629-587.lzh(119KB)からダウンロード

実装

送信フォーム
<%@ Language=VBScript %>
<%

%>
<html>
<body>
    <form method="POST" ENCTYPE="multipart/form-data" >
        <input type=file  name=img accept="image/*" >
        <br>
        <input type=submit formaction=test_basp.asp>
    </form>
</body>
</html>

受け取りサーバ
<%@ Language=VBScript %>
<%
dim total_bytes

' 1.総バイト数を読み込み
total_bytes = Request.TotalBytes
response.write("totalbytes:" & total_bytes & "<br>")

' 2.basp objを宣言
Set bobj = Server.CreateObject("basp21")

' 3.バイナリ読込
barray = Request.BinaryRead(total_bytes)

uploadDir = "D:\~~\dir\" ' サーバの保存先パスを指定する
filename = bobj.FormFileName(barray,"img")

' 4.サーバに保存
wblen = bobj.FormSaveAs(barray,"img",uploadDir & filename)
response.write("wblen:" & wblen & "<br>")

%>

解説

1.総バイト数を読み込み

Request.TotalBytesでフォームから送信された総バイト数を取得します。
その下のResponse.Write(...は取得した総バイト数を表示しているだけです。

2.basp objを宣言

BASP21オブジェクトを作ってます。

3.バイナリ読込

barray = Request.BinaryRead(total_bytes)で総バイト数を引数にして全バイナリをbarrayに読み込みます。
bobj.FormFileName(barray,"img")imgというnameのフォームのバイナリを取得します。

4.サーバに保存

bobj.FormSaveAs(barray,"img",uploadDir & filename)でサーバにバイナリデータをファイルとして保存します。
1つ目の引数barray・・・全バイナリデータ(barray)から探す。
2つ目の引数img・・・name=imgのフォームのバイナリデータを取得。
3つ目の引数uploadDir & filename・・・uploadDirのディレクトリに、filenameの名前で保存する。

wblenは成功時は正の数字で書き込んだバイト数が表示されます。
マイナスの時はエラーメッセージです。BASP21 proのメッセージリファレンスから内容確認できます。

備考

ENCTYPE="multipart/form-data"を指定するとRequest.Fromで値を取得できなくなるので、bobj.FormBinaryを使うことになります。

よもやま話

BASP21って何だろうと思ってたんですが、babaqさんの開発されたASPコンポーネントだからBASP、21は最初はバージョン番号だったらしいですが、babaqさんが気に入ってそのままコンポーネント名になったそうです。
読み方は「ビーエーエスピー にじゅういち」が本来の呼び方らしいですが、「ばすぷにーいち」と呼ばれているそう。

出典:Baba Centerfolds FAQ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0