バイナリーファイルを、擬似的に HTTP ストリーム出力する ActiveX DLL です

2000/06/04 メソッドのフォーマットを変更しました
2001/06/19 HTTP レスポンスのヘッダについて考察してみました

機能
バイナリーファイルを、HTTP ストリーム出力できます。

つまり
指定したバイトごとにバイナリーファイルを読み出し、Response.BinaryWrite に出力する事をファイルの最後まで繰り返します。

動作環境
必要なライブラリは、ディストリビューション・ウィザードによると、
VB6JP.DLL
VB6STKIT.DLL
VisualBASIC6.0 のランタイム
だそうです。
例えば、VB6ランタイム集【みやシリーズ起動用】をインストールする事で(十分条件ですが)条件を満たす事ができます。
使用方法
  1. まず、VisualBASIC6.0 のランタイムを Vector などからダウンロードしてインストールします。
  2. ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)
  3. "BinFunc.DLL" を任意のディレクトリにコピーしてください。
  4. コマンドプロンプト で、BinFunc.DLL をコピーしたディレクトリで、"RegSvr32.exe BinFunc.DLL" を実行し、レジストリに登録します。
  5. 以上で、COM コンポーネントとしての、BinFunc.DLL は登録が完了です。
    IIS ASP から、BinFunc.DLL を介して、バイナリーファイルのストリーム出力が可能となります。
  6. IIS ASP の COM オブジェクトをイナクリメントしているので、IIS-ASP 専用です
  7. IIS ASP のソースの例としては(VBScript)、
    Dim obj
    Dim ret
    Dim ScriptTimeoutValue

    REM スクリプトタイムアウトが ASP にはあります。
    REM (無限ループなどに陥った CGI{ASP} を殺すためです)
    REM これを 0(無限)にする事でタイムアウトせずにファイルを最後まで送信できます
    ScriptTimeoutValue = Server.ScriptTimeout '退避
    Server.ScriptTimeout=0

    REM まず、Http ヘッダを、カスタマイズして出力します
    REM application/octet-stream は、MIME で
    REM ブラウザでは多分、セーブするウィンドウが出ると思います
    Response.ContentType = "application/octet-stream;name=ファイル名"
    Response.AddHeader "Content-Disposition","attachment;filename=ファイル名;"
    Response.AddHeader "Content-Transfer-Encodeing","Base64"

    Set obj = CreateObject("BinaryFunc.HttpBinary") '(オブジェクトを取得)
    ret = Obj.BinaryWrite(ファイル名,一度に読み込み出力するバイト数{デフォルト256})
    1. ファイル名は絶対パス(二文字目が ":")で指定してください。
    2. 返り値は、
      予測できない失敗 = 0、
      成功 = 1、
      ファイルの指定がおかしい = 2、
      ファイルがなし = 3、
    Set obj = Nothing Server.ScriptTimeout = ScriptTimeoutValue '元に戻す


仕様


免責など
著作権は放棄します。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

DownLoad(BinFunc.lzh as 10,417byte) (BinFunc.lzh.base64)




HTTP ヘッダとブラウザの関係
ダウンロードファイルは、とPDF ファイル
ブラウザには、プラグインがインストール済み
目的は、プラグインを起動させたり、起動させずにダウンロードさせたりする事が可能か?
Content-Type: application/octet-stream;name=ファイル名
Content-Disposition: attachment;filename=ファイル名
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.6JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.7JP on Macintosh ファイル・ダウンロード
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.75JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 4.5Jp on Macintosh ファイル・ダウンロード
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.00.3103.1000Jp on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Content-Type: application/pdf;name=ファイル名
Content-Disposition: attachment;filename=ファイル名
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on Macintosh プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Netscape Comunicator 4.75JP on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 4.5Jp on Macintosh プラグインが起動してインラインで表示
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Content-Type: application/x-netscape-autoconfigure-dialer;name=ファイル名
Content-Disposition: attachment;filename=ファイル名
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 落ちた
Netscape Comunicator 4.7JP on Macintosh ファイル・ダウンロード
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.75JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 4.5Jp on Macintosh ファイル・ダウンロード
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Content-Type: application/x-netscape-autoconfigure-dialer
Netscape Navigator 3.04en on MS-Windows2000 落ちた
Netscape Comunicator 4.7JP on Macintosh ファイル・ダウンロード
(ファイル名が ASP ファイル名)
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Netscape Comunicator 4.75JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Internet Explorer 4.5Jp on Macintosh ファイル・ダウンロード
(ファイル名が ASP ファイル名)
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名が ASP ファイル名)
Content-Type: application/octet-stream
Content-Disposition: inline;filename="ファイル名"
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.7JP on Macintosh ファイル・ダウンロード
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.75JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 4.5Jp on Macintosh ファイル・ダウンロード
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名がランダム)
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 インライン表示しようとして、エラー
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Content-Type: application/pdf
Content-Disposition: inline;filename="ファイル名"
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on Macintosh プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Netscape Comunicator 4.75JP on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 4.5Jp on Macintosh プラグインが起動してインラインで表示
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名がランダム)
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Content-Type: application/pdf;name=ファイル名
Content-Disposition: inline;filename="ファイル名"
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on Macintosh プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Netscape Comunicator 4.75JP on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 4.5Jp on Macintosh プラグインが起動してインラインで表示
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
(ファイル名がランダム)
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 インライン表示しようとして、エラー
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Content-Type: application/pdf
Content-Transfer-Encodeing: BASE64
Netscape Navigator 3.04en on MS-Windows2000 プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on Macintosh プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Netscape Comunicator 4.75JP on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 4.5Jp on Macintosh プラグインが起動してインラインで表示
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Content-Type: application/octet-stream
Content-Disposition: filename=ファイル名
Netscape Navigator 3.04en on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.7JP on Macintosh ファイル・ダウンロード
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 ダウンロード・ダイアログが開いてファイル・ダウンロード
Netscape Comunicator 4.75JP on MS-Windows2000 ダウンロード・ダイアログが開いてファイル・ダウンロード
Internet Explorer 4.5Jp on Macintosh ファイル・ダウンロード
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 インライン表示しようとして、エラー
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 インライン表示しようとして、エラー
Content-Type: application/pdf
Content-Disposition: filename=ファイル名
Netscape Navigator 3.04en on MS-Windows2000 プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on Macintosh プラグインが起動してインラインで表示
Netscape Comunicator 4.7JP on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Netscape Comunicator 4.75JP on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 4.5Jp on Macintosh プラグインが起動してインラインで表示
Internet Explorer 4.72.3110.8Jp SP1 on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Internet Explorer 5.00.2919.6307Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示
Internet Explorer 5.00.2920.0000Jp on MS-Windows2000 プラグインが起動してインラインで表示
Internet Explorer 5.50.4134.0600Jp on MS-WindowsNT4.0 プラグインが起動してインラインで表示


IE5.0 の場合、
Response.AddHeader "Content-Length" , ファイルサイズ
が必要かも....
私の IE5 では現出しなかったが、ブラウザの右上のアイコンが回りっぱなしになるバグがあるらしい。
HTTP1.1 の KeepAlive との関係との事。
IE5.0 の場合、
私の IE5 では現出しなかったが、attachment の認識にバグがあるらしい。
IE5.5 の場合、
application/octet-stream の代わりに application/octet-stream-dummy かも知れない。
IE5.5 の場合、
MS の KB
プラグインのない拡張子なら...
多分、どれでも OK じゃないかなぁ。
その他
application/x-download というものあるらしいけど、IE4 でいい結果が出なかったのでパス


IE4 でプラグインが指定されている拡張子で、強制的にダウンロードさせる方法(しかもファイル名は ASP ファイル名でなく)ってあるのかいなぁ



MS02-005 問題後の IE の仕様変更について

MS02-005 の修正プログラムを適用後、TIF ファイルが直接開けない(J070255)
これで、ダウンロードさせたり、インライン表示させたりをサーバ・スクリプトで制御することが難しくなった(ほぼ不可能)かも...


リンク
見つけたので備忘録代わりに



mail to active@window.goukaku.com