BASP21 FTPオブジェクト

BASP21 FTPオブジェクトは、ASPの VBScript やVisual Basic、EXCEL VBA WSH(Windows Scripting Host)などから使えるファイル転送プロトコル(FTP)コンポーネントです。


Connect(svr,user,pass) : コネクションを確立
GetFile(remote,local[,type]) : リモートからファイルを受信
PutFile(local,remote[,type]) : リモートへファイルを送信
PutToday(local,remote[,type]) : リモートへ本日変更のファイルを送信
DeleteFile(remote) : リモートのファイルを削除
RenameFile(old,new) : リモートのファイルをリネーム
GetDir(remote[,mode]) : リモートのファイル一覧
Command(cmd) : FTPコマンド実行
GetReply() : FTPコマンドの応答テキスト
OpenLog(file[,mode]) : ログファイルオープン
CloseLog() : ログファイルクローズ
Close() : 接続のクローズ

BASP21 FTPオブジェクトの使い方

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

BASP21 FTPオブジェクトのメソッドの説明

  1. Connect
    FTPサーバに接続します。
    rc = ftp.Connect(svr,user,pass)
    svr  [in]  : 接続先のIPアドレスまたはネットワークホスト名。
                 FTPサーバ名[:ポート番号][:タイムアウト][ファイアーウォール]。":" で区切ってポート番号(省略値21)と
                 タイムアウト値(秒単位、省略値120)を指定できます。
                 ファイアーウォール経由の場合は、次のように指定します。
                 fhost fuser/fpass SITE
                 fhost fuser/fpass
                 fhost
                 fhost OPEN
    user [in]  : ユーザ名。
    pass [in]  : パスワード。
    rc [out]  : 結果コードが数字で返されます。
      0 : 接続OK
      1 - 5 : FTP エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
      10000以上 : Winsock Error
            典型的なエラーは 11001 ホスト名が見つからない 
      -1 : ソケットオープンエラー 
      -2 : タイムアウト
    例:
    rc = ftp.Connect("ftp.microsoft.com:21:120","anonymous","who@who.com")
    rc = ftp.Connect("ftp.microsoft.com proxyhost user1/pass1","anonymous","who@who.com")
    
    
  2. GetFile
    リモートからファイルを受信します。ファイル名は、文字("*")を使って複数ファイルを指定できます。
    rc = ftp.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以上 : 正常終了。送信したファイル数。
      0 : 該当するファイルなし。
      1,0以外 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    rc = ftp.GetFile("html/index.html","c:\temp\html")   ' テキストファイルの受信
    rc = ftp.GetFile("html/index.html","c:\temp\html\index2.html")   ' テキストファイルの受信(別名で保存)
    rc = ftp.GetFile("html/*.html","c:\temp\html")   ' テキストファイルの受信
    rc = ftp.GetFile("html/images/*","c:\temp\image",1)  ' バイナリファイルの受信
    
  3. PutFile
    リモートへファイルを送信します。複数ファイルの送信ができます。
    rc = ftp.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]  : 結果コードが数字で返されます。
      1以上 : 正常終了。送信したファイル数。
      0 : 該当するファイルなし。
      1,0以外 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    rc = ftp.PutFile("c:\html\index.html","html")   ' テキストファイルの送信
    rc = ftp.PutFile("c:\html\*.html","html")       ' テキストファイルの送信
    rc = ftp.PutFile("c:\html\*.html","html",2)       ' テキストファイルのAppendモード送信
    rc = ftp.PutFile("c:\html\images\*","html/images",1)   ' バイナリファイルの送信
    
  4. PutToday
    リモートへ本日変更したファイルを送信します。変更したファイルだけ送信したいときに便利。
    rc = ftp.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以上 : 正常終了。送信したファイル数。
      0 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    rc = ftp.PutToday("c:\html\*.html","html")       ' 今日変更したファイルを送信
    
  5. DeleteFile
    リモートのファイルを削除します。複数ファイルの指定ができます。
    rc = ftp.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以上 : 正常終了。削除したファイル数。
      0 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    rc =ftp.DeleteFile("html/*")    ' htmlディレクトリのすべて削除
    
    
  6. RenameFile
    リモートのファイルをリネームします。
    rc = ftp.RenameFile(old,new)
    old [in]  : 変更前のファイル名。
    new [in]  : 変更後のファイル名。
    rc [out]  : 結果コードが数字で返されます。
      2 : 変更OK
      2以外 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    rc = ftp.RenameFile("html/index.html","html/top.html")   ' index.html -> top.html
    
    
  7. GetDir
    リモートのファイル一覧を配列で返します。
    farray = ftp.GetDir(remote[,mode])
    remote [in]  : リモートのディレクトリ名。""は、カレントディレクトリ。
    mode   [in]  : ファイル一覧の種類。
      0 : 省略値。ファイル名のみ。
      1 : ディレクトリ名のみ。
      2 : LISTフォーマット。LISTコマンドの結果を返します。詳細なディレクトリのリスト。
      3 : NLSTフォーマット。NLSTコマンドの結果を返します。名前のみのリスト。
    farray [out]  : 結果が配列で返されます。エラーやエントリがないときは、配列を返しません。
    例:
    rc = ftp.GetDir("")   ' カレントディレクトリのファイル一覧
    
  8. Command
    FTPコマンドを実行します。STOR/RETR/LIST/NLSTなどのデータ転送を伴うコマンドは、実行できません。
    rc = ftp.Command(cmd)
    cmd [in]  : コマンド名とパラメータ。実行できるコマンドは、FTPサーバによって異なります。
                次のようなコマンドがFTPプロトコルでは定義されています。
                ○HELP [コマンド]  --- サーバの実装状況などを表示。
                ○CWD パス名  --- ディレクトリ変更。
                ○CDUP        --- 親のディレクトリに移動。
                ○RMD パス名  --- ディレクトリの削除。
                ○MKD パス名  --- ディレクトリの作成。
                ○PMD         --- 作業ディレクトリ名の表示。
                ○SITE 文字列 --- ファイルの属性変更などのサービスの実行。HELP SITE コマンドでサービス一覧を表示できます。
                ○SYST        --- サーバのOSの種類を表示。
                ○pasv        --- BASP21 拡張。passive モードで以降の処理を実行。
    
    rc [out]  : 結果コードが数字で返されます。
      2 : OK。実行結果のテキストは、GetReplyメソッドで求めます。
      -1 : STOR/RETR/LIST/NLSTなどのデータ転送を伴うコマンドは、発行できません。
      以外 : エラー。GetReplyメソッドでFTP応答テキストで詳細を調べてください。
    例:
    ' passiveモードにする
    ftp.Command("pasv")  ' 一度呼出せば OK
    
    rc = ftp.Command("HELP")   ' HELPコマンド
    help = ftp.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 = ftp.Command("HELP SITE")   ' HELP SITEコマンド
    helpsite = ftp.GetReply()   ' コマンドの応答
    helpsiteの内容(サーバによって異なります):
    214-The following SITE commands are recognized (* =>'s unimplemented).
       UMASK   IDLE    CHMOD   HELP 
    214 Direct comments to ftp-bugs@server1.
    
    rc = ftp.Command("HELP SITE CHMOD")   ' HELP SITE CHMODコマンド
    helpchmod = ftp.GetReply()   ' コマンドの応答
    helpchmodの内容(サーバによって異なります):
    214 Syntax: SITE CHMOD  mode  file-name
    
    
    注意:OS 付属のFTPコマンドとは異なります。
    quote コマンドは、SITE コマンドに対応します。
    
    
    
  9. GetReply
    FTPコマンドの応答テキストを受取ります。エラーの詳細やCommandメソッドの実行結果を 受取ります。
    text = ftp.GetReply()
    text [out]  : 応答テキストが文字列で返されます。複数行に渡る場合、CRLFが含まれます。
    例:
    text = ftp.GetReplay()
    
    
  10. OpenLog
    ログファイルをオープンします。FTPサーバとのFTPコマンドのやりとりをテキストファイルに 保存します。
    rc = ftp.OpenLog(file[,mode])
    file [in]  : ログファイルをフルパスで指定します。
    mode [in]  : 新規に作成する場合 0 (省略値)を、追加する場合は、 1 を指定します。
    rc [out]  : 結果コードが数字で返されます。
      0 : OK
      0以外 : エラー。
    例:
    rc = ftp.OpenLog("c:\ftplog.txt",1)   ' 追加モードでオープン
    
    
  11. CloseLog
    ログファイルをクローズします。
    rc = ftp.CloseLog()
    rc [out]  : 結果コードが数字で返されます。
      0 : OK
    例:
    rc = ftp.CloseLog()
    
    
  12. Close
    接続を切断します。
    例:
    ftp.Close
    
    

サンプル

リモート(Microsoft FTPサーバ)からファイルを受信します。
●Visual Basic
Private Sub Form_Load() Dim ftp As Object, rc As Long, v As Variant, v2 As Variant Dim ctr As Long Set ftp = CreateObject("basp21.FTP") ftp.OpenLog "c:\temp\log.txt" rc = ftp.Connect("ftp.microsoft.com", "anonymous", "") If rc = 0 Then v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細) If IsArray(v) Then For Each v2 In v Debug.Print v2 Next End If v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ) If IsArray(v) Then For Each v2 In v Debug.Print v2 Next End If rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信 End If End End Sub ●WSH
set bobj=createobject("basp21") set ftp=createobject("basp21.FTP") Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.Run ("notepad") ftp.OpenLog "c:\temp\log.txt" rc = ftp.Connect("ftp.microsoft.com", "anonymous", "") If rc = 0 Then ' passiveモードにする ftp.Command("pasv") ' 一度呼出せば OK v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細) bobj.Debug v v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイルのみ) bobj.Debug v rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信 End If

FTPプロトコルについて

FTPプロトコルの詳細は、次のサイトのRFC 959/1123日本語版が参考になります。
BUBUのページ

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

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

Home


Copyright 1999 Tatsuo Baba,All rights reserved.