Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ftp

FTP サーバーのファイルにアクセスするための接続

説明

関数 ftp を呼び出して FTP サーバーに接続すると、FTP 接続オブジェクトが作成されます。次に、FTP 接続オブジェクトを使用して、ファイルのアップロードとダウンロードを行います。サーバー上で異なるフォルダーの作成、削除、およびそのフォルダーへの移動もできます。接続を閉じるには、関数 close を使用します。

FTP は安全なプロトコルではないため、ユーザー名、パスワード、FTP サーバーにアップロードするデータおよびダウンロードするデータを一切暗号化しません。セキュアな FTP 接続が必要な場合は、sftp を使用してください。

作成

説明

ftpobj = ftp(host) は、FTP サーバー host への接続を開き、FTP 接続オブジェクトを返します。この構文は、匿名 (非認証) 接続をサポートするホストでのみ使用できます。

ftpobj = ftp(host,username) は、指定されたユーザー名で FTP アカウントにアクセスします。この構文は、匿名 (非認証) 接続をサポートするホストでのみ使用できます。

ftpobj = ftp(host,username,password) は指定されたユーザー名とパスワードで FTP アカウントにアクセスします。

ftpobj = ftp(host,username,password,Name,Value) は、1 つ以上の名前と値の引数を使用して追加の入力引数を指定します。たとえば、Windows® オペレーティング システムを実行する FTP サーバーに接続するには "System","Windows" を指定します。また、接続モードをパッシブ モードからアクティブ モードに変更するには "LocalDataConnectionMethod" の値を指定します。

入力引数

すべて展開する

FTP サーバーのホスト名。string スカラーまたは文字ベクトルとして指定します。

FTP サーバーの既定のポート番号は 21 です。接続の代替ポート番号を指定するには、host にコロン (:) とポート番号を追加します。

通常、サーバーのホスト名は "ftp.example.com" のように ftp で始まります。ただし、この方式は慣習であり、技術上の要件ではありません。たとえば、ftpobj = ftp("www.example.com:20") は、サーバー www.example.com が FTP サービスを提供するように構成されていれば、ポート番号 20 への匿名接続を開きます。

例: ftpobj = ftp("ftp.example.com")

FTP サーバー上の承認済みアカウントの名前。string スカラーまたは文字ベクトルとして指定します。FTP オブジェクトは username を標準テキストとして送信します。

承認済みアカウントのパスワード。string スカラーまたは文字ベクトルとして指定します。FTP オブジェクトは password を標準テキストとして送信します。

例: ftpobj = ftp("ftp.example.com","myusername","mypassword")

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: "System","Windows"

FTP サーバー上で実行しているオペレーティング システムのタイプ。"System""unix" または "Windows" のいずれかで構成される名前と値の引数として指定します。

FTP 接続オブジェクトはサーバーのオペレーティング システムを自動で検出します。

FTP サーバーを実行しているオペレーティング システム向けに FTP 接続オブジェクトが設定されていない場合、FTP の関数 dir の返す情報量が少なくなることがあります。このような場合、dir の返す構造体配列に空のフィールドがいくつか含まれることがあります。その場合は、ftp を再び呼び出して名前と値の引数 "System" に正しい値を指定し、正しいオペレーティング システムを指定してください。

接続モード。"LocalDataConnectionMethod""passive" または "active" のいずれかで構成される名前と値の引数として指定します。

FTP 接続を確立するためのモードは 2 種類あります。最新の FTP 実装の大半は passive モードを使用しますが、一部の古い種類のサーバーに接続する場合に active モードの指定が必要となることがあります。

  • "passive" — マシンは両方のチャネルを確立します。コマンド チャネルを確立した後、マシンは FTP サーバーがポートをリッスンするよう要求します。これにより、マシンがそのポートに接続できるようになります。

  • "active" — マシンはコマンドのチャネルを確立しますが、データのチャネルは FTP サーバーが確立します。アクティブ モードは、マシンがファイアウォールで保護されていて、外部ソースからの承認されていないセッション要求が許可されていない場合などに問題となることがあります。

リモート サーバーから日付を読み取るロケール。"ServerLocale" と string スカラーまたは文字ベクトルで構成される名前と値の引数として指定します。

ServerLocale の値は次のいずれかになります。

  • xx_YY の形式の文字ベクトルまたは string スカラー。xx は ISO 639-1 で定義された小文字 2 文字の言語コードで、YY は ISO 3166-1 alpha-2 で定義された大文字の国コードです。

次の表に一般的なロケールの値を示します。

ロケール 言語
"de_DE"ドイツ語ドイツ
"en_GB"英語英国
"en_US"英語米国
"es_ES"スペイン語スペイン
"fr_FR"フランス語フランス
"it_IT"イタリア語イタリア
"ja_JP"日本語日本
"ko_KR"韓国語韓国
"nl_NL"オランダ語オランダ
"zh_CN"簡体字中国語中国

FTP サーバーの LIST コマンド出力の解析方法。"DirParserFcn" と関数ハンドルで構成される名前と値の引数として指定します。既定値は、サーバーのオペレーティング システムに応じて @matlab.io.ftp.parseDirListingForUnix または @matlab.io.ftp.parseDirListingForWindows のいずれかになります。

カスタム関数ハンドルには 2 つの入力が必要です。

  1. ディレクトリ要素のリスト。string ベクトルとして指定します。

  2. サーバーのロケール。string スカラーとして指定します。

カスタム関数ハンドルの出力は、m 行 1 列のサイズの構造体配列でなければなりません。m はフォルダー内の項目数です。構造体のフィールドは、関数 dir で返される構造体のフィールドと同じ nameisdirbytesdatedatenum でなければなりません。これらのフィールドの詳細については、関数 dir のページを参照してください。

この名前と値の引数は、既定値ではエラーになり、dir の出力を解析できない場合に指定します。dir を参照するオブジェクト関数を使用するように、この引数を正しく指定する必要があります。

関数シグネチャ

カスタム書き込み関数は、ディレクトリ要素のリスト entries とサーバーのロケール serverLocale の 2 つの入力引数を受け入れなければなりません。

function listing = myFormatFcn(entries,serverLocale)

関数の例

textscan への入力となる要素を cell 配列に結合します。

function listing = myFormatFcn(entries,serverLocale)
    entries = join(entries,newline);
    out = textscan(entries,"%s%d%3c%d%s","MultipleDelimsAsOne",true);
    structSize = numel(out{1});
struct を事前に割り当てます。
listing = struct("name",cell(structSize,1),"isdir",zeros(1,1), ...
        "bytes",zeros(1,1),"date",'',"datenum",zeros(1,1));
textscan の出力から個々の部分を取得します。
monthName = string(out{3});
    day = string(out{4});
    time = string(out{5});
    names = out{1};
    bytes = out{2};
該当するフィールドへの入力を行う struct を作成します。
    for ii = 1 : structSize
        listing(ii).name = names{ii};
        listing(ii).isdir = false;
        listing(ii).bytes = bytes(ii);
        makeDate = day(ii) + "-" + monthName(ii) + " " + ...
            time(ii);
        thisDate = datetime(makeDate, "InputFormat", "dd-MMM HH:mm", ...
            "Locale", serverLocale);
        listing(ii).date = datestr(thisDate);
        listing(ii).datenum = datenum(thisDate);    
    end
end

FTP サーバーの転送モード。"Mode""binary" または "ascii" で構成される名前と値の引数として指定します。ASCII モードは、HTML ページやリッチ テキスト形式 (RTF) ファイルなどのテキスト ファイルに使用します。バイナリ モードは、実行可能ファイルや zip アーカイブなどの非テキスト ファイルに使用します。

FTP オブジェクトの作成後に転送モードを変更するには、関数 ascii および binary を使用します。さまざまなタイプのファイルを転送するためにモードの変更が必要になることがあります。転送モードの設定は、MATLAB セッションを終了するか設定を変更するまで維持されます。

オブジェクト関数

asciiFTP 転送モードを ASCII に設定
binaryFTP 転送モードをバイナリに設定
cdSFTP または FTP サーバー上の現在のフォルダーの変更または表示
closeSFTP または FTP サーバーへの接続を閉じる
deleteSFTP または FTP サーバー上にあるファイルの削除
dirSFTP または FTP サーバー上のフォルダーの内容の一覧表示
mgetSFTP または FTP サーバーからのファイルのダウンロード
mkdirSFTP または FTP サーバーでの新規フォルダーの作成
mputSFTP または FTP サーバーへのファイルまたはフォルダーのアップロード
renameSFTP または FTP サーバー上にあるファイルの名前の変更
rmdirSFTP または FTP サーバー上のフォルダーの削除

すべて折りたたむ

FTP サーバーへの接続を開くには、FTP オブジェクトを作成します。FTP オブジェクトを使用して、ファイルをダウンロードし、サーバー上のサブフォルダーの内容をリストします。FTP セッションの終了時に、接続を閉じます。

まず、National Centers for Environmental Information (NCEI、米国環境情報センター) の FTP サーバーに接続します。

ftpobj = ftp("ftp.ngdc.noaa.gov")
  FTP with properties:

                         Host: "ftp.ngdc.noaa.gov"
                     Username: "anonymous"
                         Port: 21
                 ServerLocale: "en_US"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForUnix
                         Mode: "binary"
    LocalDataConnectionMethod: "passive"
       RemoteWorkingDirectory: "/"

FTP サーバーの最上位フォルダーのコンテンツを一覧表示します。

dir(ftpobj)
 
DMSP                         Solid_Earth                  google12c4c939d7b90761.html  pub                          
INDEX.txt                    coastwatch                   index.html                   wdc                          
README.txt                   dmsp4alan                    international                                             
STP                          ftp.html                     ionosonde                                                 
Snow_Ice                     geomag                       mgg                                                       
 

FTP サーバーから README.txt ファイルをダウンロードします。関数 mget は、現在の MATLAB® フォルダーにコピーをダウンロードします。

mget(ftpobj,"README.txt");

関数 readlines を使用して、README.txt のコピーの内容を読み取ります。

readme = readlines("README.txt");
readme(1:4)
ans = 4×1 string
    "                 Welcome to the "
    "    NOAA/National Centers for Environmental Information (NCEI), "
    "    formerly the National Geophysical Data Center (NGDC)"
    "                    FTP area"

関数 dir を使用してサブフォルダーの内容をリストします。

dir(ftpobj,"STP")
 
ANOMALIES                   NOAA                        Solid_Earth                 publications                
DMSP                        SEIS                        aavso_22nov16               satellite_data              
ECLIPSE                     SGD                         aeronomy                    space-weather               
GEOMAGNETIC_DATA            SOLAR_DATA                  cdroms                      space_environment_modeling  
GOIN                        SPIDR                       goesr                       swpc_products               
GPS_GNSS                    STEP                        ionosonde                   tivoli                      
IONOSPHERE                  SWA                         log.txt                                                 
 

関数 cd を使用してサブフォルダーを変更します。cd からの出力は、現在の MATLAB フォルダーではなく、FTP サーバー上の現在のフォルダーへのパスです。

cd(ftpobj,"STP/space-weather")
ans = 
'/STP/space-weather'

FTP サーバー上の現在のフォルダーの内容をリストします。

dir(ftpobj)
 
aurora-airglow           documentation            interplanetary-data      online-publications      solar-data               
denig-files              geomagnetic-data         ionospheric-data         satellite-data           spacecraft-environments  
 

FTP サーバーへの接続を閉じます。FTP オブジェクトを削除するか、接続をタイム アウトさせても接続を閉じることができます。

close(ftpobj)

FTP サービスは National Centers for Environmental Information (NCEI、米国環境情報センター) により提供されています。NCEI の利用規約は、NCEI Privacy Policy, Disclaimer, and Copyright を参照してください。

National Centers for Environmental Information (NCEI、米国環境情報センター) の FTP サーバーに接続します。サーバーのロケールを英国と指定します。名前と値の引数 "DirParserFcn" を使用して、FTP サーバーの LIST コマンド出力を Windows について解析するように指定します。

ftpobj = ftp("ftp.ngdc.noaa.gov","ServerLocale","en_GB","DirParserFcn",@matlab.io.ftp.parseDirListingForWindows)
  FTP with properties:

                         Host: "ftp.ngdc.noaa.gov"
                     Username: "anonymous"
                         Port: 21
                 ServerLocale: "en_GB"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForWindows
                         Mode: "binary"
    LocalDataConnectionMethod: "passive"
       RemoteWorkingDirectory: "/"

FTP サービスは National Centers for Environmental Information (NCEI、米国環境情報センター) により提供されています。NCEI の利用規約は、NCEI Privacy Policy, Disclaimer, and Copyright を参照してください。

ヒント

  • FTP オブジェクトはプロキシ サーバー設定をサポートしていません。

  • ログイン フォルダーに移動するには、関数 cd~ 記号を渡します。

バージョン履歴

R2006a より前に導入