[ホーム] [会社概要] [製品] [サポート]
[BASP21 Pro] [FAQ] [アプリケーションガイド] [ユーザガイド] [リファレンス]
[FTP オブジェクト] [ソケット オブジェクト]
English

BASP21 Pro FTP オブジェクト

■ インストール方法

インストーラでインストールされます。 BASP21 Pro FTP オブジェクトの提供ファイルを以下に示します。
ファイル名 説明
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 と同じフォルダに配置されます。

インストーラを使わずにインストールする方法を説明します。 任意のフォルダにBFTP.dllとzlib1.dllをコピーして regsvr32 コマンドで インストールします。インストールするフォルダはどこでもかまいません。
 regsvr32 c:\b21\BFTP.dll
 regsvr32 c:\b21\x64\BFTP.dll   ... x64版

注意:ZIP機能を使用しない場合は、zlib1.dll は不要です。


アンインストール方法は、 /u オプションをつけてregsvr32コマンドを実行します。
 1. regsvr32 /u c:\b21\BFTP.dll
    regsvr32 /u c:\b21\x64\BFTP.dll   ... x64版
 2. BFTP.dll,zlib1.dll,basp21p.iniをフォルダから削除します。

■ オブジェクトの使い方

CreateObjectメソッドで"basp21pro.FTP" という名前でオブジェクトを作成します。
   Set bftp = Server.CreateObject("basp21pro.FTP")   ' ASP
   Set bftp = CreateObject("basp21pro.FTP")          ' VBA や VB
   Set bftp = WScript.CreateObject("basp21pro.FTP")  ' WSH
作成したオブジェクトでメソッドを呼出します。
   変数 = bftp.メソッド名(パラメータ)

■ Visual Studio 2015でのオブジェクトの使い方

[新規作成]-[プロジェクト]で、[Visual C#プロジェクト]-[コンソールアプリケーション]を 選択してプロジェクトを作成します。


次にソリューションエクスプローラーで[参照の追加]を選択します。


参照マネージャーで[COM]の BASP21 Pro を選択して参照を追加します。
注意:リストに表示されないときは、32bit版の BASP21 Pro のインストールが必要です。


以下のようにオブジェクトを作成して使用します。
basp21ftp bobj = new basp21ftp();



■ リファレンス

【メソッド】

Cancel
Close
CloseLog
Command
Connect

Debug
DebugClear
DeleteFile
GetDir
GetFile
GetReply

KconvFile
OpenLog
PutFile
PutToday
RenameFile

【プロパティ】

FireEvent
Result

【イベント】

OnLog
OnProgress

■ Cancelメソッド
メソッドを中断を指示します。
rc = bftp.Cancel()
引数
結果コードを数字で返します。
0: 受付完了。
1: 受付済み。
解説
中断可能なメソッドは、以下のとおりです。
- GetFile
- PutFile
- PutToday
OnLogイベント処理やOnProgressイベント処理の中で発行できます。
使用例
rc = bftp.Cancel()
関連項目

■ Closeメソッド
FTPセションおよびTCP/IP接続を切断します。
bftp.Close()
引数
なし。
解説
FTPプロトコルのQUITコマンドを送信して、その後、TCP/IP接続を切断します。
使用例
bftp.Close()
関連項目

■ CloseLogメソッド
ログファイルをクローズします。
bftp.CloseLog()
引数
なし。
解説
ログファイルをクローズします。
使用例
bftp.CloseLog()
関連項目
OpenLogメソッド

■ Commandメソッド
FTPコマンドを実行します。STOR/RETR/LIST/NLSTなどのデータ転送を伴うコマンドは、 実行できません。
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パラメータ

■ Connectメソッド
FTPサーバに接続します。
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 関連項目

■ Debugメソッド
メモ帳のウィンドウに指定した文字列を書込みます。 メモ帳は、あらかじめ起動しておくか、DebugClearメソッドで起動できます。
bftp.Debug(str)
引数
str [in]   : 書込みたい文字列を指定します。
解説
クライアントサイドでスクリプトのデバッグなどで使います。
まず、ウインドウタイトル[Bftp Debug] のメモ帳アプリケーションを探し、
見つからない場合、[無題]のメモ帳アプリケーションが選択されます。
実行後は、選択されたメモ帳のタイトルは、[Bftp Debug] となります。
使用例
bftp.DebugClear 1                ' メモ帳ウインドウが起動されてなければ起動
bftp.Debug "Hello World"       ' おなじみ
関連項目
DebugClearメソッド

■ DebugClearメソッド
メモ帳ウィンドウをクリアします。メモ帳を起動することもできます。
bftp.DebugClear [opt]
引数
opt [in]   : メモ帳が起動していなければ、起動して待つ秒数。
             既定値は、 0 で起動しません。
解説
まず、ウインドウタイトル[Bftp Debug] のメモ帳アプリケーションを探し、
見つからない場合、[無題]のメモ帳アプリケーションが選択されます。
[無題]ウインドウも見つからない場合は、秒数が指定されていれば起動して、
その秒数待ちます。
実行後は、選択または起動されたメモ帳のタイトルは、[Bftp Debug] となります。
使用例
bftp.DebugClear 1                ' メモ帳ウインドウ起動
関連項目
Debugメソッド

■ DeleteFileメソッド
リモートのファイルを削除します。複数ファイルの指定ができます。
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/*")
関連項目

■ GetDirメソッド
リモートのファイル一覧を配列で返します。
farray = bftp.GetDir(remote[,mode])
引数
remote [in]  : リモートのディレクトリ名。""は、カレントディレクトリ。
mode   [in]  : ファイル一覧の種類。
  0 : 省略値。ファイル名のみ。
  1 : ディレクトリ名のみ。
  2 : LISTフォーマット。LISTコマンドの結果を返します。詳細なディレクトリのリスト。
  3 : NLSTフォーマット。NLSTコマンドの結果を返します。名前のみのリスト。
farray [out]  : 結果が配列で返されます。エラーやエントリがないときは、配列を返しません。
解説
使用例
farray = bftp.GetDir("")  ' カレントディレクトリのファイル一覧
関連項目

■ GetFileメソッド
リモートからファイルを受信します。ファイル名は、文字("*")を使って複数ファイルを 指定できます。
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展開

関連項目

■ GetReplyメソッド
FTPコマンドの応答テキストを受取ります。エラーの詳細やCommandメソッドの実行結果を 確認するときに使います。
text = bftp.GetReply()
引数
text [out]  : 応答テキストが文字列で返されます。複数行に渡る場合、CRLFが含まれます。
解説
使用例
rc = bftp.GetReply()
関連項目

■ KconvFileメソッド
ファイルを読込んで指定した漢字コードに変換してファイルに書込みます。 変換前の漢字コードのタイプが不明の場合、自動認識します。
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に変換
関連項目

■ OpenLogメソッド
ログファイルをオープンします。FTPサーバとのFTPコマンドのやりとりをテキストファイルに 保存します。
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メソッド

■ PutFileメソッド
リモートへファイルを送信します。複数ファイルの送信が可能です。
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ファイルで送信
関連項目

■ PutTodayメソッド
リモートへ本日変更したファイルを送信します。変更したファイルだけを送信したいときに 使います。
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")       ' 今日変更したファイルを送信
関連項目

■ RenameFileプロパティ
リモートのファイルをリネームします。
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
関連項目

■ FireEventプロパティ
イベントを実行するかどうか数字で指定します。値の取得も可能です。
bftp.FireEvent = event
引数
event  [in]  : 0 - イベントを実行しません。
               1 - イベントを実行します。
解説
既定値は、0 です。
イベントの使用はパフォーマンスに影響しますので、適切に使う必要があります。

使用例
bftp.FireEvent = 1    ' イベントを実行します。
関連項目

■ Resultプロパティ
メソッドの実行結果を取得します。
number = bftp.Result
引数
number   [out]  : 最後に呼出したメソッドの実行結果を数値で返します。
解説
値の意味は、呼出したメソッドにより異なります。
使用例
rc = bftp.Result
関連項目

■ OnLogイベント
ログ書出しのタイミングで発生します。
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
関連項目

■ OnProgressイベント
メソッドの進行状態が変化したときに発生します。
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
関連項目


■ サンプル

■ FTPダウンロード (WSH VBScript)
FTPサーバに接続してファイルをダウンロードします。
''==== 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

■ FTPファイルアップロード (WSH VBScript)
FTPサーバに接続してExcelファイルをアップロードします。
''=== 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

■ FTPコマンド実行 (WSH VBScript)
FTPサーバに接続してFTPコマンドを実行します。
''=== 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

■ FTPダウンロード (C#)
FTPサーバに接続してファイルをダウンロードします。
// 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"); 
}
}

■ FTPSダウンロード (Visual C++)
FTPSサーバに接続してファイルをダウンロードするコンソールアプリケーションです。 イベントを処理します。
// 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;
}



[ホーム] [会社概要] [製品] [サポート]
[BASP21 Pro] [FAQ] [アプリケーションガイド] [ユーザガイド] [リファレンス]
[FTP オブジェクト] [ソケット オブジェクト]

Copyright © 2002-2018 B21Soft, Inc. All Rights Reserved.