BFup ActiveX コントロール

2000/08/05 初出
2008/03/06 更新

BFup ActiveX コントロールは、HTTP(RFC1867)とFTPによる ファイルアップロード機能をサポートします。 Visual Basic やIE(Internet Explorer)などのコンテナ上で動作します。


アップロードするファイルは、リストボックスにドラッグ&ドロップするか FilePathプロパティで指定します。 VBScript などのスクリプトを使うことによりアプリケーションから 簡単に操作することができます。
製品版のBFup Pro ActiveXはこちら。

リリースノート

リリース 説明
1,0,8,5 2000/08/05 : 初公開。
1,0,8,19 2000/08/19 : ページ内に他のコントロールが あると、ドラッグ&ドロップが動作しない不具合修正。右クリックでバージョン表示。
1,0,9,1 2000/09/1 : HTTPモードでポート番号を指定すると 400 Bad Request になる不具合修正。
1,0,9,7 2000/09/7 : HTTPモードでProxyをレジストリから自動取得。 ProxyFtpプロパティ追加。
1,0,9,12 2000/09/12 : Proxy自動取得の不具合修正。
1,0,9,24 2000/09/24 : リストボックス非表示時に プログレスバーを先頭に表示。BarHeightプロパティ追加。 startメソッドを連続して発行した場合、 2回目に10053 で失敗することがある不具合修正。
1,0,9,30 2000/09/30 : Cookie を正しく送信してなかった ため、ASP Session変数が使えない不具合修正。
1,0,10,7 2000/10/07 : 別名送信機能追加。 BFup.FilePath="c:\temp\abc.txt|hoge.txt"
1,0,10,18 2000/10/18 : Visual C++ ダイアログに貼れない不具合修正。
1,0,10,28 2000/10/28 : AutoStartプロパティ、BarWidthプロパティ追加。
1,0,11,3 2000/11/03 : リモートURLからの起動で警告ダイアログ表示機能追加。
1,0,11,23 2000/11/23 : PHP3でアップロードできない不具合修正。 ディレクトリ中のファイルサイズ0以降のファイルがリストボックスに追加されない不具合修正。 Charsetプロパティ追加。
1,0,101,24 2001/01/24 : 10049 エラーで送信できないことがある不具合修正。 ftpモードで URL文字列でサーバ名の後に "/" がないとこける不具合修正。
1,0,308,19 2003/08/19 : ftpモードでアップロードした場合に 2MBを超えるバイト数を送信、かつ1秒以内にキャンセルもしくは終了した場合にこける不具合修正。
1,0,802,29 2008/03/06 : バッファオーバーフローの不具合修正。 数字で始まるサーバ名に接続できない不具合修正。

BFup ActiveX コントロールのダウンロード

BFup8229.CAB 1,0,802,29(67KB) 2008/03/06 New !

最新版1,0,802,29より以前のバージョンにはバッファーオーバーフローによる 脆弱性が存在します。
詳細はこちら。


BFup.CAB は、インターネットを介してコントロールを配布するファイル形式です。
BFup ActiveX コントロールをインストールするには:

WWWサーバ経由でクライアントにインストールする場合、 BFup.CAB は、署名されていないので IE のセキュリティレベルによっては、 インストールに失敗します。

IE の[インターネットオプション]の[セキュリティ]で [ゾーン]-[信頼済みサイトゾーン]に BFup.CAB ファイルを置くサーバ名を 指定して、セキュリティレベルを[低]に設定する必要があります。 インストール終了後は、セキュリティレベルを[中]に設定してください。

WWWサーバでなくディレクトリからインストールするにはHTMLファイルを BFup.CABと同じディレクトリにおいて IE でHTML ファイルを開きます。

ブラウザにBFup ActiveX コントロールが表示されればインストールは成功です。 システムディレクトリに次のファイルがインストールされます。

BFup.dllをコピーして regsvr32 コマンドを打ってもインストールできます。

BFup ActiveX コントロールの機能

BFup ActiveX コントロールの特徴は:

BFup ActiveX コントロールのプロパティ

プロパティ 説明
AscExt (FTP) FTPでASCIIモードで送信するファイルの拡張子。デフォルト(なし)
例: BFup.AscExt = "txt;htm;html"
Auth FTPモードのユーザ名:パスワード。 URLプロパティでも指定可能
HTTPモードのAuthorizationヘッダ
例: BFup.Auth = "user1:pass1"
AutoStart 自動開始モードのカウントダウン値を秒数で指定。 デフォルトは、0で自動開始しません。自動開始後のプロパティ値は、0 にリセットされます。
例: <PARAM NAME="AutoStart" VALUE="1"> コントロール表示後に開始
BFup.AutoStart = 10 ' これから10秒後に開始
Charset 全角および半角カナファイル名を文字コード変換して送信します。 euc/jis/utf8/ucs2 のいずれかを指定します。
例: <PARAM NAME="Charset" VALUE="euc"> eucコードで送信
BackColor 背景色(#RRGGBB形式)。デフォルト(#c0c0c0)
例: BFup.BackColor = "#2020E0" '薄い青
BarColor プログレスバーのバーの色(#RRGGBB形式)
例: BFup.BarColor = "#ff0000" '赤
BarHeight プログレスバーの高さ。
例: BFup.BarHeight = 10 '細い
BFup.BarHeight = 15 '標準(デフォルト)
BFup.BarHeight = 25 '太め
BarWidth プログレスバーの長さ。
例: BFup.BarWidth = 200 '短め
BFup.BarWidth = 368 '標準(デフォルト)
BFup.BarWidth = 700 '長め。コントロールの幅(WIDTH=)も大きくすること。
Count(*1) リストボックスに設定されているファイル数
例: ctr = BFup.Count
FilePath リストボックスに設定するファイルパス。
ディレクトリ名、ファイル名、 総称名(*は一つのみ)指定ができます。 ";" で区切って複数のパスを指定できます。
別名で送信したいときは、| をつけて別名を指定します。 ディレクトリ名、総称名指定の場合は、ファイル名の前に文字列を追加して別名にします。 別名に%sを入れるとその場所にファイル名を展開します。
例: BFup.Clear 'リストボックスのクリア
BFup.FilePath = "c:\temp" 'ディレクトリ名
BFup.FilePath = "c:\dir1\aaa.txt" 'ファイル名
BFup.FilePath = "c:\dir1\aaa.txt|hoge.txt" '別名指定
BFup.FilePath = "c:\dir2\*.htm" '総称名
BFup.FilePath = "c:\dir2\*.htm|%sl" ' 別名 htm -> html へ
BFup.FilePath = "c:\dir2\*.htm;*.txt;g:\yuka\*.jpg;*.jpeg;*.bmp"

FilePathプロパティは、リストボックス内のファイル名を配列で返します。
例: ar = BFup.FilePath '配列でファイル名を受取る
If IsArray(ar) then
BFup.Debug Ubound(ar)
End If
Hide 非表示。各部品を表示したくないときに指定します。
1:開始ボタン
2:キャンセル/クリアボタン
4:リストボックス
8:プログレスバー
例: BFup.Hide = 3 'ボタンを非表示
[ファイル数] などのステータステキストを非表示にする場合は、
OBJECTタグの HEIGTH=nn と Hideプロパティを組合わせて調整します。
<OBJECT ID="BFUP" HEIGHT=50 WIDTH=480
HTMLResult (HTTP) サーバからの応答HTMLテキスト
例: htmltext = BFup.HTMLResult
Lock アクセス不可。
1:開始ボタン
2:キャンセル/クリアボタン
4:リストボックス
例: BFup.Lock = 4 'リストボックスをロック
MaxSize 最大サイズ(KB)。デフォルト(0:無制限)
例: BFup.MaxSize = 1024 ' 1MB
Para1 (HTTP) FORMデータ。 <INPUT TYPE=TEXT NAME="para1">に相当します。
例: BFup.Para1 = "parameter"
サーバサイドでの受取り例:
set bobj=Server.CreateObject("basp21")
name=bobj.Form(b,"para1") ' 小文字で指定します
Para2 (HTTP) FORMデータ。 <INPUT TYPE=TEXT NAME="para2">に相当します。
例: BFup.Para2 = "parameter"
サーバサイドでの受取り例:
set bobj=Server.CreateObject("basp21")
name=bobj.Form(b,"para2") ' 小文字で指定します
Para3 (HTTP) FORMデータ。 <INPUT TYPE=TEXT NAME="para3">に相当します。
例: BFup.Para3 = "parameter"
サーバサイドでの受取り例:
set bobj=Server.CreateObject("basp21")
name=bobj.Form(b,"para3") ' 小文字で指定します
Passive (FTP) Passiveモード
0:Passiveオフ(デフォルト)
1:Passiveオン
例: BFup.Passive = 1 'Passiveモードオン
Proxy (HTTP) HTTP: プロクシサーバ名[:ポート]。IE でProxy を使用中の場合、 レジストリから自動取得しますので設定の必要はありません。"#" を設定するとレジストリからの プロクシの設定を無視します。
例: BFup.Proxy = "server1:8080" ' HTTPプロクシ
BFup.Proxy = "#" ' レジストリのプロクシを使わない
ProxyFtp (FTP) FTP: ファイアーウォール。IE でProxy を使用中の場合、 レジストリから自動取得しますので設定の必要はありません。"#" を設定するとレジストリからの プロクシの設定を無視します。
例:
BFup.Proxy = "firewallsvr" ' FTP ファイアーウォール
ProxyAuth (HTTP) Proxy Authorizationヘッダ
例: BFup.ProxyAuth = "user1:pass1"
Result アップロードの結果(数値)
0:成功
-1:URLエラー
-2:キャンセル
-3:接続エラー
-4:送信エラー
-5:サーバエラー
例: rc = BFup.Result
Size (*1) リストボックスに設定されているファイルの合計サイズ
例: fsize = BFup.Size
TextColor 文字色。デフォルト #ffffff(黒)
例: BFup.TextColor = "#2020E0" '薄い青
TransParent (*2) 背景色をページの背景色にします
0:TransParentオフ(デフォルト)
1:TransParentオン
例: BFup.TransParent = 1 'TransParentオン
URL アップロードURL。
"http://" か "ftp://" で始まるURL名を指定。
http://server[:port]/path/xxx : HTTPモード。スクリプトやCGIを指定。
ftp://[user:pass@]server/xxx : FTPモード。ディレクトリを指定。
HTTPモード使用時は、URLにRFC1867 をサポートした スクリプト(BASP21のFormSaveAsメソッド)やCGIを指定します。 パス名のみを指定してもアップロードされません。
例: BFup.URL = "http://www.hoge.com/bfup/test.asp" 'HTTPモード
BFup.URL = "ftp://user1:pass1@ftp.hoge.com/wk" 'FTPモード
(FTP)のプロパティは、FTPモード時のみ有効です。
(HTTP)のプロパティは、HTTPモード時のみ有効です。
(*1)のプロパティは、値の取得のみです。
(*2)のプロパティは、IE(Internet Explorer)でのみ有効です。
プロパティは、スクリプトでダイナミックに変更可能ですが、
OBJECTタグのPARAMパラメータで初期化できます。
<PARAM NAME="FilePath" VALUE="c:\temp">

BFup ActiveX コントロールのメソッド

メソッド 説明
Cancel アップロード処理のキャンセル
Clear リストボックスクリア
Debug メモ帳へ文字列出力
例: BFup.Debug BFup.FilePath
DebugCLear メモ帳のウインドウ内容のクリア
Start アップロード処理の開始
例:URLを変更してワンタッチアップロード
   <script language=vbscript>
   sub cmdgo_onClick
    BFUP.URL = "http://www.hoge/hoge.asp"
    BFUP.FilePath = "c:\temp;d:\temp"
    BFUP.Start
    BFUP.URL = "ftp://ftp.hoge@user1:pass1/wk"
    BFUP.Clear
    BFUP.FilePath = "e:\temp;f:\temp"
    BFUPStart
   end sub
   </script>
   <type=button name=cmdgo value=start>
        

BFup ActiveX コントロールのイベント

イベント 説明
Cancel アップロード処理がキャンセルされたとき発生
Clear ファイル指定がクリアされたとき発生
Complete アップロード処理が完了したとき発生
例:完了時にIEのフレームに結果を出力
sub BFUP_onComplete(result)
parent.output.document.write result
end sub
Log アップロード処理でログ出力時に発生
例:メモ帳へログを出力
sub BFUP_onLog(log)
BFUP.Debug log
end sub

例:IEのフレームにログを出力
sub BFUP_onLog(log)
log = Replace(log,vbcrlf,"<BR>")
parent.output.document.write log & "<BR>"
end sub
Progress アップロード処理でプログレスバー更新時に発生
例:ページ内にプログレスメッセージを出力
<P ID=IDMSG>message</P>
..........
sub BFUP_onProgress(msg)
IDMSG.innerText = msg
end sub
Start アップロード処理が開始されたとき発生
例:IEのフレームをクリア
sub BFUP_onStart
parent.output.document.open("text/html")
end sub

BFup ActiveX コントロールの使い方(IE)

IE(Internet Explorer)をコンテナとして使う場合は、 HTMLの中にOBJECTタグを埋め込むだけです。

BFup ActiveX コントロールの使い方(Visual Basic)

Visual Basicにはフォームに貼り付けて使います。 [プロジェクト]-[コンポーネント]のコントロールで 「BFup ActiveX Control」に チェックを入れます。ツールボックスに「BFup ActiveX Control」が表示されますので 選択してフォームに貼り付けます。

サンプル

サンプル1:リストボックスとプログレスバーのみ表示(IE)
<HTML><HEAD><TITLE>BFup ActiveX Control</TITLE></HEAD>
<body bgcolor="#008284" text="#ffffff" LINK="#ffff00">
<OBJECT ID="BFUP"  HEIGHT=200 WIDTH=440
 CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6">
    <PARAM NAME="FilePath" VALUE="d:\dat\02\l\05*">
    <PARAM NAME="TransParent" VALUE="1">
    <PARAM NAME="BarColor" VALUE="#ffffff">
</OBJECT>
<P>
<input type=textbox name=txturl size=40>
<input type=button name=CMDstart value=Start><BR>
<input type=button name=CMDcancel value=Cancel><BR>
<P ID=IDMSG></P>
<script language=vbscript>
sub BFUP_onProgress(msg)
 IDMSG.innerText = msg
end sub
sub CMDstart_onClick
 BFUP.URL=txturl.value
 BFUP.Start
end sub
sub CMDcancel_onClick
 BFUP.Cancel
end sub
</script>
</BODY></HTML>



サンプル2:フローティングフレームにログ出力(IE)
リストボックスとキャンセルボタンを非表示、プログレスバーを太めに。
----------- iframe.html start ---------------------------------------
<HTML><BODY bgcolor=pink>
<OBJECT ID="BFUP" HEIGHT=50 WIDTH=480
 CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6">
    <PARAM NAME="FilePath" VALUE="d:\temp\あいう.txt">
    <PARAM NAME="URL" VALUE="ftp://server1/wk">
    <PARAM NAME="auth" VALUE="user1:pass1">
    <PARAM NAME="barheight" VALUE="40">
    <PARAM NAME="hide" VALUE="6">
    <PARAM NAME="transparent" VALUE="1">
</OBJECT>
<script language=vbscript>
sub BFUP_onComplete(result)
  output.document.write result
end sub
sub BFUP_onLog(log)
  log = Replace(log,vbcrlf,"<BR>")
  output.document.write log & "<BR>"
  window.status = log ' IEのステータスバーにログ表示
end sub
sub BFUP_onstart
  output.document.open "text/html" ' フレームのクリア
end sub
</script>
<BR>
<IFRAME name=output WIDTH=600 HEIGHT=200>
</IFRAME>
</BODY></HTML>
----------- iframe.html end   ---------------------------------------




サンプル3:フレームにログ出力(IE)
----------- frame.html start ---------------------------------------
<HTML><HEAD><title>BFup ActiveX Control</title>
</head>
<frameset rows="70%,*">
<frame src="test.html" name=test>
<frame src="blank.html" name=output>
</frameset>
</html>
----------- frame.html end   ---------------------------------------

----------- test.html start ---------------------------------------
<HTML><body bgcolor="#335533" text="#eeffee" LINK="#ee9999">
<OBJECT ID="BFUP"
 CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6">
    <PARAM NAME="URL" VALUE="http://www.bfup.com/babaq/testf.asp">
    <PARAM NAME="auth" VALUE="user1:pass1">
    <PARAM NAME="TransParent" VALUE="1">
    <PARAM NAME="BarColor" VALUE="#00a0a0">
</OBJECT>
<script language=vbscript>
sub BFUP_onComplete(result)
  parent.output.document.write result
end sub
sub BFUP_onLog(log)
  log = Replace(log,vbcrlf,"<BR>")
  parent.output.document.write log & "<BR>"
end sub
</script>
</BODY></HTML>
----------- test.html end ---------------------------------------




サンプル4:Visual Basicで使う
Option Explicit
Private Sub BFileUp1_OnLog(ByVal strLog As String)
 Debug.Print strLog
End Sub
Private Sub BFileUp1_OnProgress(ByVal strMsg As String)
 Label1.Caption = strMsg
End Sub
Private Sub Form_Load()
 BFileUp1.URL = "ftp://ftp.bfup.com@hoge:hoge/tbaba/wk"
 BFileUp1.FilePath = "c:\*.txt"
 BFileUp1.AscExt = "txt"
End Sub


HTTPモード時のBASP21を使ったサーバサイドスクリプト

HTTPモードでアップロードする場合は、サーバサイドでBASP21を使うと簡単にファイルを受取れます。 BFup Activex Control は、RFC1867に従って次のFORMデータを送信します。
項目名説明
magicファイル情報(オフセット、ファイルサイズ)。
BASP21.DLLがパフォーマンスアップのため参照します)
para1文字項目1
para2文字項目2
para3文字項目3
xfile001ファイル項目1
xfile002ファイル項目2
xfile003ファイル項目3
xfile999ファイル項目999まで
ファイル項目名は、リストボックスの上から"xfile001"、"xfile002"と連番になります。


サーバサイドスクリプトサンプル
<%
a=Request.TotalBytes
b=Request.BinaryRead(a)
set bobj=Server.CreateObject("basp21")
name=bobj.Form(b,"para1")
fname=bobj.FormFileName(b,"xfile001")
fname=Mid(fname,InstrRev(fname,"\")+1)
fsize=bobj.FormSaveAs(b,"xfile001","c:\temp\" & fname)
%>
<HTML><HEAD><TITLE>File Upload Test</TITLE>
<BODY>
<H1>Testing</H1>
<BR>
<%= name %>さん、アップロードされました<BR>
fsize= <%= fsize %><BR>
</BODY></HTML>

次のようにすると一度に全ファイルを簡単に保存できます
<%
a=Request.TotalBytes
b=Request.BinaryRead(a)
set bobj=Server.CreateObject("basp21")
' 全ファイル名をタブ区切りで返す(2000/7/20 以降のbasp21.dll で有効)
fnames=bobj.FormFileName(b,"*")
' 全ファイルを保存(2000/7/20 以降のbasp21.dll で有効)
fcnt=bobj.FormSaveAs(b,"*","c:\temp")
%>
<HTML><HEAD><TITLE>File Upload Test</TITLE>
<BODY>
<H1>Testing</H1>
<BR>
fcnt= <%= fcnt %><BR>
fnames= <%= fnames %><BR>
</BODY></HTML>





BFup ActiveX Control のバージョン表示

お使いのBFup Activex Control のバージョンを知るには、 コントロール上でマウスを右クリックします。

ブラウザのバージョン

BFup Activex Control は、IE4.xおよび IE5.x で動作を確認しました。 IE3.x およびNetscape では動作を確認しておりません。 IE3.x では、HTMLタグの内容を変更する機能(innerTextプロパティ)などは動作しませんので、 ご注意ください。

FAQ


babaqフリーソフトのご使用上の注意

●プログラムを使って発生した損害に関しては、一切の責任を負いません。
●使用、配布に制限はありません。自由にお使いください。
●動作の保証はありません。
●動作を確認したOSは、Windows NT 4.0 とWindows 95/98/ME/2000/XPのみです。

Home


Copyright 2000-2008 Tatsuo Baba,All rights reserved.