
| ファイル名 | 説明 |
| BFTP.dll | BASP21 Pro FTP オブジェクト本体。32ビット版、64ビット版それぞれバイナリは異なります。 同じファイル名です。 |
| zlib1.dll |
ZIP処理で使用します。ZLIBライブラリ。バージョン 1.2.11.0。
32ビット版(144KB)、64ビット版(166KB)同じファイル名です。
ZIP処理は、BFTP.dllバージョン1,0,1710,20 以上からサポートします。 |
| basp21p.ini | ライセンス情報を設定します。 BFTP.dll と同じフォルダに配置されます。 |
regsvr32 c:\b21\BFTP.dll regsvr32 c:\b21\x64\BFTP.dll ... x64版 注意:ZIP機能を使用しない場合は、zlib1.dll は不要です。
1. regsvr32 /u c:\b21\BFTP.dll
regsvr32 /u c:\b21\x64\BFTP.dll ... x64版
2. BFTP.dll,zlib1.dll,basp21p.iniをフォルダから削除します。
Set bftp = Server.CreateObject("basp21pro.FTP") ' ASP
Set bftp = CreateObject("basp21pro.FTP") ' VBA や VB
Set bftp = WScript.CreateObject("basp21pro.FTP") ' WSH
作成したオブジェクトでメソッドを呼出します。
変数 = bftp.メソッド名(パラメータ)



basp21ftp bobj = new basp21ftp();

|
Cancel Close CloseLog Command Connect |
Debug DebugClear DeleteFile GetDir GetFile GetReply |
KconvFile OpenLog PutFile PutToday RenameFile |
|
FireEvent Result |
|
OnLog OnProgress |
rc = bftp.Cancel() 引数 結果コードを数字で返します。 0: 受付完了。 1: 受付済み。 解説 中断可能なメソッドは、以下のとおりです。 - GetFile - PutFile - PutToday OnLogイベント処理やOnProgressイベント処理の中で発行できます。 使用例 rc = bftp.Cancel() 関連項目
bftp.Close() 引数 なし。 解説 FTPプロトコルのQUITコマンドを送信して、その後、TCP/IP接続を切断します。 使用例 bftp.Close() 関連項目
bftp.CloseLog() 引数 なし。 解説 ログファイルをクローズします。 使用例 bftp.CloseLog() 関連項目 OpenLogメソッド
rc = bftp.Command(cmd)
引数
cmd [in] : コマンド名とパラメータ。実行可能なコマンドは、FTPサーバによって異なります。
次のようなコマンドがFTPプロトコルでは定義されています。
○HELP [コマンド] --- サーバの実装状況などを表示。
○CWD パス名 --- ディレクトリ変更。
○CDUP --- 親のディレクトリに移動。
○RMD パス名 --- ディレクトリの削除。
○MKD パス名 --- ディレクトリの作成。
○PMD --- 作業ディレクトリ名の表示。
○SITE 文字列 --- ファイルの属性変更などのサービスの実行。HELP SITE コマンドでサービス一覧を表示できます。
○SYST --- サーバのOSの種類を表示。
○pasv --- BASP21 拡張。passive モードで以降の処理を実行。
○encode sjis|euc|jis|utf8 --- BASP21 拡張。日本語ファイル名のエンコード指定。
encode コマンドは、バージョン1,0,502,18 以上からサポートします。
○zipコマンド --- BASP21 拡張。PutFile/GetFileメソッドでのZIP処理を指示します。
zip=処理メソッド名
zipdir=格納フォルダ名
zipfilter=ファイル選択文字
zipopt=オプション
zippass=パスワード
ZIP処理は、BFTP.dllバージョン1,0,1710,20 以上からサポートします。
rc [out] : 結果コードが数字で返されます。
0 : 接続OK
1-5 : FTPレスポンスコード (FTPプロトコルの3桁コード/100)
-1 : ソケットオープンエラー
-2 : タイムアウト
-3 : キャンセル
-5 : STORなど実行できないコマンドを指定した
-6 : Connenctコマンドが発行されていないか失敗している
-10000以下 : Winsockエラー。
解説
FTPコマンドの応答テキストは、GetReplyメソッドで確認します。
サーバ側の日本語
使用例
rc = bftp.Command("HELP") ' HELPコマンド
help = bftp.GetReply() ' コマンドの応答
helpの内容(サーバによって異なります):
214-The following commands are recognized (* =>'s unimplemented).
USER PORT STOR MSAM* RNTO NLST MKD CDUP PBSZ*
PASS PASV APPE MRSQ* ABOR SITE XMKD XCUP PROT*
ACCT* TYPE MLFL* MRCP* DELE SYST RMD STOU SIZE
SMNT* STRU MAIL* ALLO CWD STAT XRMD AUTH* MDTM
REIN* MODE MSND* REST XCWD HELP PWD ADAT*
QUIT RETR MSOM* RNFR LIST NOOP XPWD CCC*
214 Direct comments to ftp-bugs@server1.
rc = bftp.Command("HELP SITE") ' HELP SITEコマンド
helpsite = bftp.GetReply() ' コマンドの応答
helpsiteの内容(サーバによって異なります):
214-The following SITE commands are recognized (* =>'s unimplemented).
UMASK IDLE CHMOD HELP
214 Direct comments to ftp-bugs@server1.
rc = bftp.Command("HELP SITE CHMOD") ' HELP SITE CHMODコマンド
helpchmod = bftp.GetReply() ' コマンドの応答
helpchmodの内容(サーバによって異なります):
214 Syntax: SITE CHMOD <sp> mode <sp> file-name
ZIP拡張コマンド。
zip=処理メソッド名
例:
rc = bftp.Command("zip=putfile,getfile")
解説:
後続のPutFileまたはGetFileメソッドでのZIP処理を指定します。
PutFilelメソッド:zip圧縮してファイルを送信します。
ファイル名にフォルダを指定した場合、フォルダ以下すべてのファイルを圧縮します。
GetFileメソッド:受信ファイルが".zip" 拡張子の場合、zip展開します。
フォルダ階層を含めて展開します。
ファイル日付は、ZIPファイルの書庫日付となります。
zipoptパラメータのfiledate=now オプションで現在時刻に変更できます。
zipdir=格納フォルダ名
例:
rc = bftp.Command("zipdir=c:\wk\zip")
解説:
PutFileメソッド:
フォルダ名の場合、送信するzipファイルを保存します。
作成するzipファイル名は、オリジナルのフォルダ名やファイル名.zip となります。
フルパスのzipファイル名なら、そのファイル名でzipファイルを作成します。
作成したzipファイルは送信後もそのまま残ります。
指定がない場合は、一時フォルダに作成して、送信後に削除します。
GetFileメソッド:
zipdirパラメータのフォルダにzipファイルを展開します。
指定がない場合は、GetFileメソッドの第2引数のフォルダに保存します。
zipfilter=ファイル選択文字
例:
rc = bftp.Command("zipfilter=.doc:.ppt")
解説:
ZIP処理時にファイル名を文字列で選択します。
zipopt=オプション
例:
rc = bftp.Command("zipopt=encode=utf-8,skipemptydir=yes,logfile=logfile-name,pass2=パスワード2!")
解説:
encode=utf-8
ファイル名をUTF-8でZIPファイルに書き込みます。
skipemptydir=yes
フォルダ指定のzipファイル作成時に、空フォルダを追加しません。
logfile=logfile-name
ZIP詳細ログをファイルに書き込みます。
pass2=第2パスワード
2段階ZIP処理を行います。ZIPパスワードを指定します。
PutFileメソッドで、
ZIP圧縮ファイル作成後にもう一度、そのZIPファイルを圧縮します。
ファイルの拡張子は、.zip.zip となります。
GetFileメソッドで、
ファイルの拡張子が.zip.zip の場合に、ZIPファイル展開を2回行います。
関連項目
zippassパラメータ
zipoptパラメータ
zipfilterパラメータ
rc = bftp.Connect(svr,user,pass)
引数
svr [in] : 接続先のIPアドレスまたはネットワークホスト名。
[SSL|TLS|TLS1.1|TLS1.2] FTPサーバ名[:ポート番号][:タイムアウト][ファイアーウォール]。":" で区切ってポート番号(省略値21)と
SSL|TLS|TLS1.1|TLS1.2 ... FTPS(FTP over SSL)通信モード。
FTPサーバ名 ... サーバ名あるいはIPアドレスを指定。
タイムアウト値 ...秒単位でタイムアウト値(省略値120)を指定。
ファイアーウォール経由の場合は、次のように指定します。
fhost fuser/fpass SITE
fhost fuser/fpass
fhost
fhost OPEN
user [in] : ユーザ名。
pass [in] : パスワード。
rc [out] : 結果コードが数字で返されます。
0 : 接続OK
-1 : ソケットオープンエラー
-2 : タイムアウト
-3 : キャンセル
-99 : basp21p.ini ファイルが見つからないか、ライセンスキーの誤り
-10000以下 : Winsockエラー。
11001 ホスト名が見つからない
10061 ポート番号に対応したアプリケーションがない、またはシャットダウン中
解説
FTPサーバとの接続を確立します。
IPv6接続の場合は、basp21p.ini ファイルに ipv6パラメータの指定が必要です。
basp21p.iniファイル
[global]
ipv6=1
IPv6アドレスは、中括弧で囲んで指定します。
この場合は、ipv6パラメータの設定は不要です。
例 [2001::34]
ipv6パラメータは、バージョン 1,0,1705,9以降でサポートされます。
FTPS(FTP over SSL)通信の場合は、FTPサーバ名の前に"TLS " または"SSL "を指定します。
"TLS1.1 " または"TLS1.2 "でバージョンを指定可能です。
"AUTH TLS" および"PROT P"コマンドを使う Explicit モードをサポート。
Explicitは、通常のFTPのコマンドポートを使ってAUTH TLSコマンドを発行して
ハンドシェーク後(暗号化成功後)にログインを開始します。
コントロールチャネルとデータチャネル共に暗号化されます。
ftps - FTP-SSL and FTP-TLS - the state of play(英文)
にFTPSをサポートするFTPサーバソフトの一覧があります。
IIS配下でFTPS(FTP over SSL)モードを実行する場合、匿名ユーザでは Connectメソッドが失敗します。
AdminユーザまたはSystemユーザ権限を持つアカウント上で実行する必要があります。
logonuserパラメータでアカウントを偽装する必要があります。
FTPS(FTP over SSL)通信は、バージョン1,0,502,18 以上からサポートします。
Connectメソッドで、Implicit/Explicit モードの切り替えが可能です。
デフォルトでは、Explicitモードで接続します。
サーバー名またはIPアドレスの後ろに
ポート番号990 を指定すると Implicitモードで動作します。
例:
rc = bftp.Connect("TLS ftp.server:990", "user", "pass") ' FTPS Implicitモード接続
Implicitモードは、v1,0,1503,19以降で動作します。
使用例
rc = bftp.Connect("ftp.server","user","pass")
rc = bftp.Connect("TLS ftp.server","user","pass") ' FTPS (AUTH TLS)通信
rc = bftp.Connect("TLS1.2 ftp.server","user","pass") ' FTPS (AUTH TLS)通信 TLS1.2
関連項目
bftp.Debug(str) 引数 str [in] : 書込みたい文字列を指定します。 解説 クライアントサイドでスクリプトのデバッグなどで使います。 まず、ウインドウタイトル[Bftp Debug] のメモ帳アプリケーションを探し、 見つからない場合、[無題]のメモ帳アプリケーションが選択されます。 実行後は、選択されたメモ帳のタイトルは、[Bftp Debug] となります。 使用例 bftp.DebugClear 1 ' メモ帳ウインドウが起動されてなければ起動 bftp.Debug "Hello World" ' おなじみ 関連項目 DebugClearメソッド
bftp.DebugClear [opt]
引数
opt [in] : メモ帳が起動していなければ、起動して待つ秒数。
既定値は、 0 で起動しません。
解説
まず、ウインドウタイトル[Bftp Debug] のメモ帳アプリケーションを探し、
見つからない場合、[無題]のメモ帳アプリケーションが選択されます。
[無題]ウインドウも見つからない場合は、秒数が指定されていれば起動して、
その秒数待ちます。
実行後は、選択または起動されたメモ帳のタイトルは、[Bftp Debug] となります。
使用例
bftp.DebugClear 1 ' メモ帳ウインドウ起動
関連項目
Debugメソッド
rc = bftp.DeleteFile(remote)
引数
remote [in] : 削除したいファイル名を指定します。ディレクトリの区切りは "/" を使います。
複数ファイルの指定は、 "a*.txt" 、"*"、"*.html" などのように "*" を使います。
"*" は、1度しか使えません。例えば、"*aa*.txt" は指定できません。
例: a.html --- カレントディレクトリのa.html
html/a.html --- htmlディレクトリのa.html
html/*.html --- htmlディレクトリの .html ファイルすべて
html/* --- htmlディレクトリのすべてのファイル
rc [out] : 結果コードが数字で返されます。
1以上 : 正常終了。削除したファイル数。
-1 : ソケットオープンエラー
-2 : タイムアウト
-6 : Connenctコマンドが発行されていないか失敗している
-5xx : ファイルが見つからない(サーバによって値は異なります)
-10000以下 : Winsockエラー。
解説
使用例
rc = bftp.DeleteFile("html/*")
関連項目
farray = bftp.GetDir(remote[,mode])
引数
remote [in] : リモートのディレクトリ名。""は、カレントディレクトリ。
mode [in] : ファイル一覧の種類。
0 : 省略値。ファイル名のみ。
1 : ディレクトリ名のみ。
2 : LISTフォーマット。LISTコマンドの結果を返します。詳細なディレクトリのリスト。
3 : NLSTフォーマット。NLSTコマンドの結果を返します。名前のみのリスト。
farray [out] : 結果が配列で返されます。エラーやエントリがないときは、配列を返しません。
解説
使用例
farray = bftp.GetDir("") ' カレントディレクトリのファイル一覧
関連項目
rc = bftp.GetFile(remote,local[,type])
引数
remote [in] : リモートのファイル名。ディレクトリの区切りは "/" を使います。
複数ファイルの指定は、 "a*.txt" 、"*"、"*.html" などのように "*" を使います。
"*" は、1度しか使えません。例えば、"*aa*.txt" は指定できません。
例: a.html --- カレントディレクトリのa.html
html/a.html --- htmlディレクトリのa.html
html/*.html --- htmlディレクトリの .html ファイルすべて
html/* --- htmlディレクトリのすべてのファイル
local [in] : ローカル(BASP21が動いているマシン)のファイル名またはディレクトリ名。
複数ファイルの場合、ディレクトリ名を指定してください。
type [in] : 受信するデータ形式を次のように指定します。
0 : ASCII(省略値)。txt/html などのテキストファイルの場合。
1 : バイナリ。jpg/gif/exe/lzh/tar.gz などのバイナリファイルの場合。
rc [out] : 結果コードが数字で返されます。
1以上 : 正常終了。送信したファイル数。
-1 : ソケットオープンエラー
-2 : タイムアウト
-6 : Connenctコマンドが発行されていないか失敗している
-7 : ローカルファイルオープン失敗
-8 : ローカルファイルアクセス失敗
-10 : ローカルフォルダが見つからない
-83 : UNZIP処理エラー。
-85 : ZIPパスワードエラー。ZIP展開指定時。
-5xx : ファイルが見つからない(サーバによって値は異なります)
-10000以下 : Winsockエラー。
解説
FTPオブジェクトをファイアーウォールの内側で使う場合、Passive モードで受信しないと
処理が失敗することがあります。
rc = bftp.Command("pasv") ' Passiveモード
とすると、それ以降 Passive モードになります。
受信後、ZIP展開する場合は、先行して Commandメソッドを呼出します。
rc = bftp.Command("zip=getfile")
ZIP処理は、BFTP.dllバージョン1,0,1710,20 以上からサポートします。
使用例
rc = bftp.GetFile("html/index.html","c:\temp\html") ' テキストファイルの受信
rc = bftp.GetFile("html/index.html","c:\temp\html\index2.html") ' テキストファイルの受信(別名で保存)
rc = bftp.GetFile("html/*.html","c:\temp\html") ' テキストファイルの受信
rc = bftp.GetFile("html/images/*","c:\temp\image",1) ' バイナリファイルの受信
rc = bftp.Command("zip=getfile")
rc = bftp.Command("zippass=パスワード!") ' ZIPパスワード
rc = bftp.Command("zipopt=logfile=c:\temp\ziplog.txt") ' ZIP処理ログ
rc = bftp.GetFile("html.zip","c:\temp\html",1) ' ZIP展開
関連項目
text = bftp.GetReply() 引数 text [out] : 応答テキストが文字列で返されます。複数行に渡る場合、CRLFが含まれます。 解説 使用例 rc = bftp.GetReply() 関連項目
rc = bftp.KconvFile(infile,outfile,outtype[,intype])
引数
infile [in] : 変換前のファイル名。
outfile [in] : 変換後に書込むファイル名。
outtype [in] : 変換後の漢字コードのタイプを数字で指定します。
0 - 変換せずに漢字タイプを数字で返します
1 - SHIFT JIS
2 - EUC
3 - JIS
4 - UNICODE UCS2
5 - UNICODE UTF8
intype [in] : 変換前の漢字コードのタイプが確定しているとき数字で指定します。
0 - 不明(省略値)。自動認識します。
1 - SHIFT JIS
2 - EUC
3 - JIS
4 - UNICODE UCS2
5 - UNICODE UTF8
rc [out] : 変換後のファイルの大きさを返します。マイナスの値は、エラーです。
outtype = 0 なら漢字のタイプを数字で返します。
-1 : タイプ指定エラー
-2 : 読込みファイルオープンエラー
-3 : 読込みファイルサイズエラー
-6 : 書込みファイルオープンエラー
-7 : 変換エラー
-8 : ファイルアクセスエラー
解説
次のような場合、漢字コードの自動認識が失敗することがあります。
o SHIFT JISで半角カナのみ
o 漢字文字数が少ない
o UNICODE UTF8
使用例
len = bftp.KconvFile("c:\sjis.txt","c:\euc.txt",2,1) ' SHIFT JIS からEUCに変換
関連項目
rc = bftp.OpenLog(file[,mode])
引数
file [in] : ログファイルをフルパスで指定します。
mode [in] : ログレコードを新規に作成する場合 0 (省略値)を、
追加する場合は、 1 を指定します。
rc [out] : 結果コードが数字で返されます。
0 : 正常にオープンされた
-7 : オープンエラー - 他のスレッドで使用中の場合など
解説
FTPサーバとのFTPコマンドのやりとり以外に
メソッドの処理開始時と終了時の情報をログファイルに書込みます。
ファイルのアクセスエラーなどの詳細情報を記録します。
ログレコードの形式は、次のとおりです。
yyyy/mm/dd hh:mm:ss.sss メソッド名 begin パラメータ
yyyy/mm/dd hh:mm:ss.sss メソッド名 end ok 正常終了
yyyy/mm/dd hh:mm:ss.sss メソッド名 end error 異常終了
使用例
rc = bftp.OpenLog("c:\ftplog.txt",1) ' 追加モードでオープン
関連項目
CloseLogメソッド
rc = bftp.PutFile(local,remote[,type])
引数
local [in] : 送信するファイル名をフルパスで指定します。
複数ファイルの指定は、 "a*.txt" 、"*"、"*.html" などのように "*" を使います。
例: c:\html\a.html --- htmlディレクトリのa.html
c:\html\*.html --- htmlディレクトリの .html ファイルすべて
c:\html\* --- htmlディレクトリのすべてのファイル
remote [in] : リモートのディレクトリ名。"" は、カレントディレクトリ。
type [in] : 送信するデータ形式を次のように指定します。
0 : ASCII(省略値)。txt/html などのテキストファイルの場合。
1 : バイナリ。jpg/gif/exe/lzh/tar.gz などのバイナリファイルの場合。
2 : ASCII + 追加(Append)モード。
3 : バイナリ + 追加(Append)モード。
rc [out] : 結果コードが数字で返されます。
0以上 : 正常終了。複数ファイルを指定した場合、送信したファイル数。
単一ファイルを指定した場合は、送信バイト数が返ります。
-2 : タイムアウト
-3 : キャンセル
-6 : Connenctコマンドが発行されていないか失敗している
-7 : ローカルファイルオープン失敗
-8 : ローカルファイルアクセス失敗
-9 : ローカルファイルが見つからない
-10 : ローカルフォルダが見つからない
-19 : FTPサーバーからエラー通知
エラー詳細は、Openlogメソッドでログファイル書込み後に確認
rc = bftp.OpenLog("c:\ftplog.txt",1) ' 追加モードでオープン
-82 : ZIP処理エラー。ZIP処理指定時。
-10000以下 : Winsockエラー。
解説
FTPオブジェクトをファイアーウォールの内側で使う場合、Passive モードで送信しないと
処理が失敗することがあります。
rc = bftp.Command("pasv") ' Passiveモード
とすると、それ以降 Passive モードになります。
ZIP圧縮して送信する場合は、先行して Commandメソッドを呼出します。
rc = bftp.Command("zip=putfile")
ZIP処理は、BFTP.dllバージョン1,0,1710,20 以上からサポートします。
使用例
rc = bftp.PutFile("c:\html\index.html","html") ' テキストファイルの送信
rc = bftp.PutFile("c:\html\*.html","html") ' テキストファイルの送信
rc = bftp.PutFile("c:\html\*.html","html",2) ' テキストファイルのAppendモード送信
rc = bftp.PutFile("c:\html\images\*","html/images",1) ' バイナリファイルの送信
rc = bftp.Command("zip=putfile") ' ZIP処理の指定
rc = bftp.Command("zippass=パスワード!") ' ZIPパスワード
rc = bftp.PutFile("c:\html","html",1) ' htmlフォルダ以下を html.zipファイルで送信
関連項目
rc = bftp.PutToday(local,remote[,type])
引数
local [in] : 送信するファイル名をフルパスで指定します。
複数ファイルの指定は、 "a*.txt" 、"*"、"*.html" などのように "*" を使います。
例: c:\html\a.html --- htmlディレクトリのa.html
c:\html\*.html --- htmlディレクトリの .html ファイルすべて
c:\html\* --- htmlディレクトリのすべてのファイル
remote [in] : リモートのディレクトリ名。"" は、カレントディレクトリ。
type [in] : 送信するデータ形式を次のように指定します。
0 : ASCII(省略値)。txt/html などのテキストファイルの場合。
1 : バイナリ。jpg/gif/exe/lzh/tar.gz などのバイナリファイルの場合。
2 : ASCII + 追加(Append)モード。
3 : バイナリ + 追加(Append)モード。
rc [out] : 結果コードが数字で返されます。
1以上 : 正常終了。送信したファイル数。
-2 : タイムアウト
-3 : キャンセル
-6 : Connenctコマンドが発行されていないか失敗している
-7 : ローカルファイルオープン失敗
-8 : ローカルファイルアクセス失敗
-9 : ローカルファイルが見つからない
-10 : ローカルフォルダが見つからない
-10000以下 : Winsockエラー。
解説
使用例
rc = bftp.PutToday("c:\html\*.html","html") ' 今日変更したファイルを送信
関連項目
rc = bftp.RenameFile(old,new)
引数
old [in] : 変更前のファイル名。
new [in] : 変更後のファイル名。
rc [out] : 結果コードが数字で返されます。
rc [out] : 結果コードが数字で返されます。
2 : 正常終了。
-2 : タイムアウト
-3 : キャンセル
-6 : Connenctコマンドが発行されていないか失敗している
-10000以下 : Winsockエラー。
解説
使用例
rc = bftp.RenameFile("html/index.html","html/top.html") ' index.html -> top.html
関連項目
bftp.FireEvent = event
引数
event [in] : 0 - イベントを実行しません。
1 - イベントを実行します。
解説
既定値は、0 です。
イベントの使用はパフォーマンスに影響しますので、適切に使う必要があります。
使用例
bftp.FireEvent = 1 ' イベントを実行します。
関連項目
number = bftp.Result 引数 number [out] : 最後に呼出したメソッドの実行結果を数値で返します。 解説 値の意味は、呼出したメソッドにより異なります。 使用例 rc = bftp.Result 関連項目
Sub bftp_OnLog(logdata)
End Sub
引数
logdata [in] : ログデータ。
解説
FireEventプロパティが 1 の場合に発生します。
イベント内でイベントを発生させる メソッドを呼出すことはできません。
使用例
' VBScriptの例
Set bftp= WScript.CreateObject("basp21pro.FTP","bftp_")
bftp.FireEvent = 1
bftp.debugclear 1
rc = bftp.Connect("xxxx", "user", "pass")
Sub bftp_OnLog(logdata)
bftp.Debug logdata
End Sub
' Visual Basicの例
' [プロジェクト]-[参照設定]で [BASP21 Pro FTP] をチェックしてください
Option Explicit
Dim WithEvents bftp As basp21ftp
Private Sub bftp_OnLog(ByVal strlog As String)
Debug.Print strlog
End Sub
Private Sub Form_Load()
Dim rc As Long
Set bftp = New basp21ftp
bftp.DebugClear 1
bftp.FireEvent = 1
rc = bftp.Connect("xxxx", "user", "pass")
End
End Sub
関連項目
Sub bftp_OnProgress(data,total,current)
End Sub
引数
data [in] : 進捗データ。
total [in] : ファイルのサイズ。バイト数。
current [in] : 現在のファイルの転送バイト数。
解説
FireEventプロパティが 1 の場合に発生します。
イベント内でイベントを発生させるメソッドを呼出すことはできません。
使用例
' VBScriptの例
Set bftp= WScript.CreateObject("basp21pro.FTP","bftp_")
bftp.FireEvent = 1
bftp.debugclear 1
rc = bftp.Connect("xxxx", "user", "pass")
Sub bftp_OnProgress(data,total,current)
bftp.Debug data & vbCrLf & total & vbCrLf & current
End Sub
' Visual Basicの例
' [プロジェクト]-[参照設定]で [BASP21 Pro FTP] をチェックしてください
Option Explicit
Dim WithEvents bftp As basp21ftp
Dim cancel As Long
Dim rc As Long
Private Sub bftp_OnLog(ByVal logdata As String)
Debug.Print logdata
End Sub
Private Sub bftp_OnProgress(ByVal para As String, ByVal total As Long, ByVal current As Long)
Debug.Print para
Debug.Print total
Debug.Print current
DoEvents
If cancel = 1 Then
bftp.cancel
End If
End Sub
Private Sub Command1_Click()
rc = bftp.Connect("xxxx", "user", "pass")
Debug.Print rc
rc = bftp.PutFile("c:\data\good.jpg", "wk", 1)
Debug.Print rc
Debug.Print "done."
End
End Sub
Private Sub Command2_Click()
cancel = 1
End Sub
Private Sub Form_Load()
cancel = 0
Set bftp = New basp21ftp
bftp.FireEvent = 1
End Sub
関連項目
''==== ftpget.vbs
Set bftp= WScript.CreateObject("basp21pro.FTP")
bftp.DebugClear 1
bftp.OpenLog "c:\temp\a\log.txt"
rc = bftp.Connect("ftp.hogehoge.com", "anonymous", "your@hogehoge.com")
If rc = 0 Then
rc = bftp.GetFile("dir1/abc.html", "c:\temp") 'ファイル受信
End If
bftp.Debug "rc=" & rc
WScript.Quit
''=== ftpput.vbs
Set bftp= WScript.CreateObject("basp21pro.FTP")
bftp.DebugClear 1
bftp.OpenLog "c:\temp\a\log.txt"
rc = bftp.Connect("ftp.hogehoge.com", "user1", "pass1")
If rc = 0 Then
rc = bftp.PutFile("dir1", "c:\temp\abc.xls") 'ファイル送信
End If
bftp.Debug "rc=" & rc
WScript.Quit
''=== ftpcmd.vbs
Set bftp = Wscript.CreateObject("basp21pro.FTP")
bftp.Debugclear 1
rc = bftp.Connect("ftp.hogehoge.com", "user1", "pass1")
If rc = 0 Then
rc = bftp.Command("help")
bftp.Debug bftp.GetReply()
End If
bftp.Debug "rc=" & rc
WScript.Quit
// ftpdown.cs
// csc /R:BFTPLib.dll ftpdown.cs
// ftpdown url filepath user pass
//
using System;
class MainClass {
public static void Main(string[] args) {
// url,filepath,user,pass
if (args.Length != 4) {
DisplayUsage();
return;
}
if (args[0] == "/?") {
DisplayUsage();
return;
}
int rc = 0;
string url = args[0];
string filename = args[1];
string user = args[2];
string pass = args[3];
Console.WriteLine(url);
Console.WriteLine(filename);
Console.WriteLine(user);
Console.WriteLine(pass);
string server = url;
int i = server.IndexOf("/",0);
string path = "";
if (i != -1) {
path = server.Substring(i+1);
server = server.Substring(0,i);
}
try {
BFTPLib.Iftp bftp = new BFTPLib.basp21ftp();
string host = server;
rc = bftp.Connect(server, user, pass);
if (rc != 0) {
Console.WriteLine("connect error " + server + " " + rc.ToString());
return;
}
rc = bftp.GetFile(path,filename,1); //ファイル受信
if (rc < 0) {
Console.WriteLine("GetFile error " + path + " " + rc.ToString());
return;
}
}
catch(Exception ex) {
Console.WriteLine("Unexpected COM exception: " + ex.Message);
}
// finish
Console.WriteLine("Done. " + rc.ToString());
}
private static void DisplayUsage() {
Console.WriteLine("ftpdown.");
Console.WriteLine("Usage: ftpdown.exe url,filename,user,pass");
}
}
// ftptes2.cpp : コンソール アプリケーション用のエントリ ポイントの定義
//
#include "stdafx.h"
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
#import "BFTP.tlb" no_namespace
#define DISPID_ONPROGRESS 1
#define DISPID_ONLOG 2
// イベントシンクID
#define SINKID 0
// イベントシンクオブジェクト
class BFTPSinkObj : public IDispEventImpl<SINKID,BFTPSinkObj>
{
public:
BEGIN_SINK_MAP(BFTPSinkObj)
SINK_ENTRY(SINKID,DISPID_ONLOG,OnLog)
SINK_ENTRY(SINKID,DISPID_ONPROGRESS,OnProgress)
END_SINK_MAP()
// イベントルーチン
HRESULT _stdcall OnLog(BSTR log) {
_bstr_t data = log;
printf("OnLog !! %s\n",(const char*)data);
return S_OK;
}
HRESULT _stdcall OnProgress(BSTR msg,long total, long current) {
_bstr_t data = msg;
printf ("OnProgress !!%s %d %d\n",(const char*)data,total,current);
return S_OK;
}
};
void com_assert(HRESULT result, char *msg) {
if ( FAILED(result) ) {
printf("error %d %s",result,msg);
exit(1);
}
}
int main(int argc, char* argv[])
{
HRESULT hr = ::CoInitialize(NULL); // COM初期化処理
com_assert(hr,"com init failed");
_Module.Init(NULL, ::GetModuleHandle(NULL));
IftpPtr pBFTPobj(__uuidof(basp21ftp)); // スマートポインタを設定
// シンクオブジェクト作成&接続
BFTPSinkObj *pBFTPSinkObj = new BFTPSinkObj;
hr = AtlGetObjectSourceInterface(pBFTPobj, &pBFTPSinkObj->m_libid,
&pBFTPSinkObj->m_iid, &pBFTPSinkObj->m_wMajorVerNum, &pBFTPSinkObj->m_wMinorVerNum);
com_assert(hr,"AtlGetObjectSourceInterface");
hr = pBFTPSinkObj->DispEventAdvise(pBFTPobj, &pBFTPSinkObj->m_iid);
com_assert(hr,"DispEventAdvise failed");
pBFTPobj->OpenLog("d:\\work\\log.txt",0);
pBFTPobj->put_FireEvent( 1L );
int rc = pBFTPobj->Connect("TLS localhost","ftpuser1","pass1"); // コネクト
rc = pBFTPobj->GetFile("/pub/incoming/sample.txt","d:\\work",1); // GetFileメソッド
rc = pBFTPobj->Close();
// シンクオブジェクト切断&消去
if (pBFTPSinkObj->m_dwEventCookie != 0xFEFEFEFE)
pBFTPSinkObj->DispEventUnadvise(pBFTPobj, &pBFTPSinkObj->m_iid);
delete pBFTPSinkObj;
pBFTPobj = NULL; // オブジェクトクリア
_Module.Term();
CoUninitialize();
return 0;
}