C を使用して FTP サーバーにファイルをアップロードおよびダウンロードするにはどうすればいいですか? - TechRepublic

C# を使用して FTP サーバーにファイルをアップロードおよびダウンロードするにはどうすればいいですか? - TechRepublic

出版

zsbox-hotmailの画像

多くのアプリケーションは、FTP経由でファイルをアップロードおよびダウンロードする機能を必要とします。自動化されたプロセスでさえ、データ転送のためにFTPサーバーと定期的にやり取りします。Microsoftはこの点を認識し、開発者がこの機能を簡単に実装できるようにしています。このドキュメントでは、Microsoftが.NET Frameworkで提供している機能を活用する簡単な方法を紹介します。

多くのアプリケーションは、FTP経由でファイルをアップロードおよびダウンロードする機能を必要とします。自動化されたプロセスでさえ、データ転送のためにFTPサーバーと定期的にやり取りします。Microsoftはこの点を認識し、開発者がこの機能を簡単に実装できるようにしています。このドキュメントでは、Microsoftが.NET Frameworkで提供している機能を活用する簡単な方法を紹介します。

このブログ投稿は、TechRepublic のダウンロードとして PDF 形式でも入手可能で、これには、概説されている手法を説明するサンプル コードを含むサンプル Visual Studio ファイルが含まれています。

予備的な考え

ファイルの移動に入る前に、いくつか注意すべき点があります。

  • 各リクエストには、CredentialsプロパティにNetworkCredentialsオブジェクトを関連付ける必要があります。これにより、FTPサーバーに対する認証方法がリクエストに指示されます。
  • リクエストオブジェクトに提供されるURIには、アップロードまたはダウンロードするファイル名が含まれます。例えば、some.ftp.comから「data.xml」というファイルをダウンロードする場合、URIはftp://some.ftp.com/data.xmlとなります。
  • Streamオブジェクトについて理解しておく必要があります。このオブジェクトは、ファイルのアップロードとダウンロードの両方で使用します。

これらは単純なので、「え、誰がそんなこと理解できるの?」と思うかもしれません。実は、私がFTPサーバーとの間でファイルをやり取りし始めた頃は、これらの概念の一部を理解していなかったので、重要だと思ったのです。それでは、コードを見てみましょう。

ファイルをダウンロードする

ファイルのダウンロードはアップロードよりもはるかに簡単なので、まずはダウンロードから始めましょう。WebClientオブジェクトを作成し、Credentialsプロパティにログイン情報を設定します。

次のステップは、WebClientオブジェクトのDownloadDataメソッドを呼び出し、ダウンロードしたいファイルのURIを指定することです。DownloadDataメソッドは、ダウンロードしたファイルを表すバイト配列を返します。このバイト配列がファイルに書き込まれると、ダウンロードが完了します。この処理の完全なコードは図Aに示されています。

図A

ファイルをダウンロードする

最後のfile.Close()呼び出しが重要であることに注意してください。この方法でファイルを開いた場合は必ず閉じてください。閉じないと、他のプロセスからファイルにアクセスできなくなります。ストリームを閉じると、変更内容がディスクにコミットされます。

ファイルをアップロード

ファイルのアップロードは、ファイルのダウンロードよりもはるかに複雑です。まず、2つのデータストリームを処理する必要があります。1つはFTP接続用、もう1つはディスクから読み込んでアップロードするファイル用です。

ファイルをアップロードする手順は次のとおりです。

  1. FtpWebRequestオブジェクトを作成する
  2. FtpWebRequest.MethodプロパティをUploadFileに設定する
  3. FtpWebRequest.Credentialsプロパティをログイン情報に設定します
  4. FtpWebRequestオブジェクトのリクエストストリームを取得します。これが書き込み先のストリームです。
  5. アップロードするファイルを開き、そのデータへのストリームを取得します。
  6. 入力ストリームからファイルのデータを読み取り、リクエストストリームに書き込みます。
  7. アップロードされたファイルのストリームとリクエストストリームを閉じます

このコードは図 Bに示されています。

図B

ファイルをアップロードする

ご覧のとおり、ファイルのダウンロードよりもアップロードに 2 倍以上のコード行数がかかります。

サンプルアプリケーションをダウンロードする

このブログ記事は、TechRepublic から PDF 形式でダウンロードできます。ダウンロードには、ここで概説したコーディング原則を網羅したサンプル Visual Studio プロジェクト ファイルが含まれています。サンプル プロジェクトには、この記事で紹介したすべてのコードと、プロジェクトで役立つ可能性のあるファイルのアップロード/ダウンロード インターフェイスが含まれています。

サンプル プロジェクトのインターフェースを図 Cに示します。

図C

サンプルプロジェクトインターフェース
記事をシェア
zsbox-hotmailの画像

zsbox-hotmail

Tagged: