2000/08/05 初出
2008/03/06 更新
アップロードするファイルは、リストボックスにドラッグ&ドロップするか
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 : バッファオーバーフローの不具合修正。 数字で始まるサーバ名に接続できない不具合修正。
最新版1,0,802,29より以前のバージョンにはバッファーオーバーフローによる
脆弱性が存在します。
詳細はこちら。
BFup.CAB は、インターネットを介してコントロールを配布するファイル形式です。
BFup ActiveX コントロールをインストールするには:
<HTML><HEAD><TITLE>BFup ActiveX Control</TITLE></HEAD> <BODY> <OBJECT ID="BFUP" CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6" CODEBASE="BFup8229.CAB#version=1,0,802,29"> </OBJECT> </BODY></HTML> versionパラメータは省略できますが、バージョンアップのときに必要です。 version内の数字の区切りは、ピリオドではなくカンマです。 ピリオドにするとバージョンアップされませんので注意。 |
IE の[インターネットオプション]の[セキュリティ]で [ゾーン]-[信頼済みサイトゾーン]に BFup.CAB ファイルを置くサーバ名を 指定して、セキュリティレベルを[低]に設定する必要があります。 インストール終了後は、セキュリティレベルを[中]に設定してください。
WWWサーバでなくディレクトリからインストールするにはHTMLファイルを BFup.CABと同じディレクトリにおいて IE でHTML ファイルを開きます。
ブラウザにBFup ActiveX コントロールが表示されればインストールは成功です。 システムディレクトリに次のファイルがインストールされます。
(FTP)のプロパティは、FTPモード時のみ有効です。
プロパティ 説明 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.CountFilePath リストボックスに設定するファイルパス。
ディレクトリ名、ファイル名、 総称名(*は一つのみ)指定ができます。 ";" で区切って複数のパスを指定できます。
別名で送信したいときは、| をつけて別名を指定します。 ディレクトリ名、総称名指定の場合は、ファイル名の前に文字列を追加して別名にします。 別名に%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 IfHide 非表示。各部品を表示したくないときに指定します。
1:開始ボタン
2:キャンセル/クリアボタン
4:リストボックス
8:プログレスバー
例: BFup.Hide = 3 'ボタンを非表示[ファイル数] などのステータステキストを非表示にする場合は、 OBJECTタグの HEIGTH=nn と Hideプロパティを組合わせて調整します。 <OBJECT ID="BFUP" HEIGHT=50 WIDTH=480HTMLResult (HTTP) サーバからの応答HTMLテキスト
例: htmltext = BFup.HTMLResultLock アクセス不可。
1:開始ボタン
2:キャンセル/クリアボタン
4:リストボックス
例: BFup.Lock = 4 'リストボックスをロックMaxSize 最大サイズ(KB)。デフォルト(0:無制限)
例: BFup.MaxSize = 1024 ' 1MBPara1 (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.ResultSize (*1) リストボックスに設定されているファイルの合計サイズ
例: fsize = BFup.SizeTextColor 文字色。デフォルト #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モード
(HTTP)のプロパティは、HTTPモード時のみ有効です。
(*1)のプロパティは、値の取得のみです。
(*2)のプロパティは、IE(Internet Explorer)でのみ有効です。
プロパティは、スクリプトでダイナミックに変更可能ですが、
OBJECTタグのPARAMパラメータで初期化できます。
<PARAM NAME="FilePath" VALUE="c:\temp">
メソッド 説明 Cancel アップロード処理のキャンセル Clear リストボックスクリア Debug メモ帳へ文字列出力
例: BFup.Debug BFup.FilePathDebugCLear メモ帳のウインドウ内容のクリア 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>
イベント 説明 Cancel アップロード処理がキャンセルされたとき発生 Clear ファイル指定がクリアされたとき発生 Complete アップロード処理が完了したとき発生
例:完了時にIEのフレームに結果を出力
sub BFUP_onComplete(result)
parent.output.document.write result
end subLog アップロード処理でログ出力時に発生
例:メモ帳へログを出力
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 subProgress アップロード処理でプログレスバー更新時に発生
例:ページ内にプログレスメッセージを出力
<P ID=IDMSG>message</P>
..........
sub BFUP_onProgress(msg)
IDMSG.innerText = msg
end subStart アップロード処理が開始されたとき発生
例:IEのフレームをクリア
sub BFUP_onStart
parent.output.document.open("text/html")
end sub
<PARAM>タグでプロパティを初期化することができます。 <HTML><body> <OBJECT ID="BFUP" HEIGHT=200 WIDTH=440 CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6"> <PARAM NAME="FilePath" VALUE="c:\images;d:\yuka\*.jpg;*.jpeg"> <PARAM NAME="URL" VALUE="http://server/hoge.asp"> </OBJECT> </BODY></HTML>HEIGHTとWIDTHを指定するとコントロールのサイズを調整できます。
<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> |
![]() |
リストボックスとキャンセルボタンを非表示、プログレスバーを太めに。 ----------- 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 --------------------------------------- |
----------- 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 --------------------------------------- |
![]() |
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 |
![]() |
項目名 | 説明 |
magic | ファイル情報(オフセット、ファイルサイズ)。 BASP21.DLLがパフォーマンスアップのため参照します) |
para1 | 文字項目1 |
para2 | 文字項目2 |
para3 | 文字項目3 |
xfile001 | ファイル項目1 |
xfile002 | ファイル項目2 |
xfile003 | ファイル項目3 |
xfile999 | ファイル項目999まで |
<% 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> |
# | Product | 説明 |
1 | BASP21 Form* メソッド | IIS。説明不要ですね。安心の国産(笑) |
2 | BASP21 Pro Form* メソッド | IIS。これまた説明不要。安心の商用版 |
3 | Posting Acceptor(PA) | IIS。Microsoft社のISAPI DLL |
4 | SA FileUp | IIS。SoftArtisans, Inc。 |
5 | NETMan UpLoader for ASP | IIS+Windows。System.Lab.。 |
6 | PHP3/4 | UNIX+Windows。一番簡単かも。 |
7 | perl/cで書いたCGI | UNIX+Windows。フリーの物が多い |
<HTML><HEAD><TITLE>BFup ActiveX Control</TITLE></HEAD> <BODY> <OBJECT ID="BFUP" CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6"> <PARAM NAME="URL" VALUE="http://www.bfup.com/babaq/testf.asp"> <PARAM NAME="FilePath" VALUE="c:\temp\*.jpeg;*.jpg;d:\temp;e:\temp"> <PARAM NAME="AutoStart" VALUE="1"> </OBJECT> </BODY></HTML> |
<HTML><HEAD><TITLE>BFup ActiveX Control</TITLE></HEAD> <BODY> <OBJECT ID="BFUP" CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6" CODEBASE="BFup.CAB#version=1,0,308,19"> </OBJECT> </BODY></HTML> |
Authプロパティは、基本認証(Basic)のみに対応しています。 IIS5 場合: [設定]-[コントロールパネル]-[管理ツール] インターネット インフォメーション サービスで、BFup からアクセスする、 (つまり、BFup.URLプロパティで設定するURL)ディレクトリ、 またはファイルを選択し、そのプロパティを開きます。 [ディレクトリ セキュリティ] プロパティまたは [ファイル セキュリティ] プロパティをクリックします。 [匿名アクセスおよび認証コントロール] の [編集] をクリックします。 [認証方法] ダイアログ ボックスで、[基本認証]のみを選択します。 基本認証を設定したBFupでアクセスするディレクトリまたはファイルに対して NTFS セキュリティを設定します。 ここで設定したWindowsユーザアカウントとパスワードを BFup.Authプロパティに設定します。 hoge アカウントでパスワードがpass の例: BFup.Auth = "hoge:pass" |
MFC のダイアログプロジェクトで、 [プロジェクト]-[プロジェクトへ追加]-[コンポーネント..] [Registered ACtiveX Controls]で BFileup Class を選択します。 コントロールボックスからBFupを選択してダイアログに貼り付けます。 [Class Wizard]-[メンバ変数]-[コントロール]で貼り付けたBFupの ID を選択して、[変数の追加]でm_BFup を追加します。 メソッドの呼出しは、CxxxxDlg::OnInitDialog()関数などで: m_BFup.SetFilePath("c:\\temp"); m_BFup.SetUrl("http://hoge.com/hoge/test.asp"); |
========================= bfup.php3 ================================== <HTML><HEAD> <TITLE>BFup - File Upload using PHP3</TITLE></HEAD> <BODY> <?php if (!isset($HTTP_POST_VARS)) { $body = " <OBJECT ID=\"BFUP\" CLASSID=\"CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6\"> <PARAM NAME=\"FilePath\" VALUE=\"c:\\temp\"> <PARAM NAME=\"URL\" VALUE=\"bfup.php3\"> <PARAM NAME=\"transparent\" VALUE=\"1\"> <PARAM NAME=\"proxy\" VALUE=\"#\"> </OBJECT> <script language=vbscript> sub BFUP_onLog(log) log = Replace(log,vbcrlf,\"<BR>\") output.document.write log & \"<BR>\" end sub sub BFUP_onstart output.document.open \"text/html\" end sub sub BFUP_onComplete(result) output.document.write result end sub </script> <IFRAME name=output WIDTH=600 HEIGHT=200> </IFRAME>"; echo $body; } else { $path = '/tmp/upload/'; // アップロード先パス $max = 999; echo "<table border=1>"; echo "<tr><td>#</td><td>file</td><td>size</td></tr>"; for ($i = 1;$i < $max;$i++) { $xfile = sprintf("xfile%03d",$i); if (${$xfile} == '') break; $xfile_name =$xfile. '_name'; $xfile_size =$xfile. '_size'; echo "<tr><td>$i</td><td>${$xfile_name}</td>"; echo "<td>${$xfile_size}</td></tr>"; if (!copy(${$xfile},$path.${$xfile_name})) echo "failed to copy ${$xfile}<br>\n"; } echo "</table>"; } ?> </BODY> </HTML> |
<HTML><HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> |
<% Server.ScriptTimeout = 3600 %>IIS5の場合、IIS仮想ディレクトリの[プロパティ]-[アプリケーションの設定]-[アプリケーションの保護] を[低(IISプロセス)]にするとパフォーマンスがよくなります。