ホームページ >バックエンド開発 >PHPチュートリアル >PHP の FTP アップロードおよびダウンロード テクノロジ

PHP の FTP アップロードおよびダウンロード テクノロジ

王林
王林オリジナル
2023-05-10 20:43:341701ブラウズ

Web 開発では、FTP (ファイル転送プロトコル) は、ファイルをアップロードおよびダウンロードするために一般的に使用される方法の 1 つです。 PHP は効率的なサーバー側スクリプト言語として、当然ながら FTP アップロードとダウンロードを完全にサポートします。この記事では、FTPプロトコルの基礎知識、FTP関数の使い方、事例分析など、PHPにおけるFTP技術について紹介します。

1. FTP プロトコルの基礎知識

FTP プロトコルは、TCP/IP プロトコル スイートのプロトコルであり、ネットワーク上でファイルを転送するために使用されます。 FTP は、アクティブ モードとパッシブ モードの 2 つのモードに分かれています。アクティブ モードでは、クライアントが接続を開始し、データ送信中にポート番号がランダムに割り当てられます。パッシブ モードでは、クライアントとサーバーの両方が接続を開始し、データ送信用に異なるポート番号を指定する必要があります。

FTP は、ASCII モードとバイナリ モードという 2 つの主な方法で動作します。アスキーモードはテキストファイルの文字セットに従ってファイル転送を行うため、テキストファイルなどのデータ型に適しており、バイナリモードはバイナリモードでファイル転送を行い、非テキスト型に適しています。画像や音声などのデータ。

2. PHP で FTP 関数を使用する方法

PHP では、特に FTP アップロードおよびダウンロードに使用される一連の関数が提供されています。一般的に使用される関数には、ftp_connect()、ftp_login()、ftp_put() があります。 、ftp_get() など。以下では、これらの機能の使い方を一つずつ紹介していきます。

1. FTP サーバーへの接続

FTP サーバーへの接続は、FTP アップロードおよびダウンロードの最初のステップであり、ftp_connect() 関数を使用して実行できます。この関数はサーバー アドレスとポート番号を渡す必要があり、接続ハンドルを返します。接続が成功したら、他の FTP 関数を使用してファイルを転送できます。

サンプル コード:

$conn = ftp_connect('ftp.example.com', 21);
if(!$conn) {
    die('连接FTP服务器失败!');
}

2. FTP サーバーにログインします

接続が成功したら、ftp_login() 関数を使用してログインする必要があります。接続ハンドル、ユーザー名、パスワードを渡します。

サンプル コード:

$login = ftp_login($conn, 'username', 'password');
if(!$login) {
    die('FTP服务器登录失败!');
}

3. ファイルのアップロード

FTP アップロード ファイルでは ftp_put() 関数を使用でき、接続ハンドルとリモート パス (アップロードされたファイル) を渡す必要があります。サーバー パスへのパス)、ローカル パス(ローカル ファイルへのパス)、および転送モード(バイナリまたは ASCII)。

サンプル コード:

$local_file = 'local/file.txt';
$remote_file = 'remote/file.txt';
$mode = FTP_ASCII;
if(ftp_put($conn, $remote_file, $local_file, $mode)) {
    echo '文件上传成功!';
} else {
    echo '文件上传失败!';
}

4. ファイルのダウンロード

FTP ダウンロード ファイルでは ftp_get() 関数を使用でき、接続ハンドル、ローカル パス、リモートを渡す必要があります。パス、送信モード、その他のパラメータ。

サンプル コード:

$local_file = '/local/path/file.txt'; 
$remote_file = '/remote/path/file.txt';
$mode = FTP_ASCII;
if(ftp_get($conn, $local_file, $remote_file, $mode)) {
    echo '文件下载成功!';
} else {
    echo '文件下载失败!';
}

5. FTP 接続を閉じる

ファイル転送が完了したら、ftp_close() 関数を使用して FTP 接続を閉じる必要があります。

サンプルコード:

ftp_close($conn);

3. 事例分析

次に、PHP の FTP 関数を使用してファイルをアップロードおよびダウンロードする方法を示す例を紹介します。

要件の例:

  • Web ページ上でファイルのアップロードおよびダウンロード機能を提供する;
  • ファイルは、パスとファイル名を含めて FTP サーバーに保存されます。アップロード時;
  • アップロードされたファイルのリストを表示し、ファイルの削除をサポートできます。

アイデアの例:

  • 最初に FTP サーバーに接続してログインします。
  • ユーザーがファイルをアップロードするときに、ftp_put() 関数を使用します。指定されたパスにファイルをアップロードするには、
  • ユーザーがファイルをダウンロードする場合は、 ftp_get() 関数を使用して、ファイルをローカルにダウンロードします。
  • ユーザーがファイルを削除する場合は、次を使用しますftp_delete() 関数を使用して、指定されたファイルを削除します。

サンプルコード:

//连接FTP服务器
$conn = ftp_connect('ftp.example.com', 21);
if(!$conn) {
    die('连接FTP服务器失败!');
}
//登录FTP服务器
$login = ftp_login($conn, 'username', 'password');
if(!$login) {
    die('FTP服务器登录失败!');
}
//文件上传
if($_FILES && $_FILES['file']) {
    $local_file = $_FILES['file']['tmp_name']; //本地文件路径
    $filename = $_FILES['file']['name']; //文件名
    $remote_file = '/uploads/' . $filename; //远程文件路径
    $mode = FTP_BINARY; //上传模式
    if(ftp_put($conn, $remote_file, $local_file, $mode)) {
        echo '文件上传成功!';
    } else {
        echo '文件上传失败!';
    }
}
//文件下载
if(isset($_GET['file'])) {
    $remote_file = '/uploads/' . $_GET['file']; //远程文件路径
    $local_file = $_SERVER['DOCUMENT_ROOT'] . '/downloads/' . $_GET['file']; //本地文件路径
    $mode = FTP_BINARY; //下载模式
    if(ftp_get($conn, $local_file, $remote_file, $mode)) {
        echo '文件下载成功!';
    } else {
        echo '文件下载失败!';
    }
}
//文件列表
$files = ftp_nlist($conn, '/uploads/');
echo '<ul>';
foreach($files as $file) {
    $filename = basename($file);
    echo '<li><a href="?file=' . urlencode($filename) . '">' . $filename . '</a> <a href="?delete=' . urlencode($filename) . '">删除</a></li>';
}
echo '</ul>';
//文件删除
if(isset($_GET['delete'])) {
    $filename = '/uploads/' . $_GET['delete']; //远程文件路径
    if(ftp_delete($conn, $filename)) {
        echo '文件删除成功!';
    } else {
        echo '文件删除失败!';
    }
}
//关闭FTP连接
ftp_close($conn);

概要:

この記事では、PHP における FTP アップロードおよびダウンロード技術の基本的な知識と機能の使用法を紹介し、簡単な操作方法を示します。この場合、読者にとって役立つことを願っています。実際の開発では、ファイルサイズの制限やファイルの種類の制限、ユーザー権限の制御などの機能の追加など、ニーズに応じて適切な改善を行うことができます。

以上がPHP の FTP アップロードおよびダウンロード テクノロジの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。