7 способов загрузить файл на FTP-сервер с помощью PHP

В этой статье блога мы рассмотрим различные способы загрузки файла на FTP-сервер с помощью PHP. FTP (протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по сети на основе TCP/IP. PHP предоставляет несколько встроенных функций, которые позволяют нам взаимодействовать с FTP-серверами. Мы обсудим семь различных методов вместе с примерами кода, которые помогут вам легко загружать файлы.

Метод 1: использование функции ftp_put()
Функция ftp_put() позволяет загрузить файл на FTP-сервер. Вот пример:

$ftpServer = 'ftp.example.com';
$ftpUsername = 'your-username';
$ftpPassword = 'your-password';
$localFilePath = '/path/to/local/file.txt';
$remoteFilePath = '/path/to/remote/file.txt';
$ftpConnection = ftp_connect($ftpServer);
ftp_login($ftpConnection, $ftpUsername, $ftpPassword);
ftp_put($ftpConnection, $remoteFilePath, $localFilePath, FTP_BINARY);
ftp_close($ftpConnection);

Метод 2: использование функции ftp_nb_put()
Функция ftp_nb_put() аналогична ftp_put(), но она выполняет неблокирующую загрузку файлов. Вот пример:

// Same setup as Method 1
$ftpConnection = ftp_connect($ftpServer);
ftp_login($ftpConnection, $ftpUsername, $ftpPassword);
$upload = ftp_nb_put($ftpConnection, $remoteFilePath, $localFilePath, FTP_BINARY);
while ($upload == FTP_MOREDATA) {
    // Perform additional actions or display progress
    // ...
    $upload = ftp_nb_continue($ftpConnection);
}
ftp_close($ftpConnection);

Метод 3: использование библиотеки CURL
Вы также можете использовать библиотеку CURL для загрузки файлов на FTP-сервер. Вот пример:

// Same setup as Method 1
$ftpUrl = 'ftp://' . $ftpUsername . ':' . $ftpPassword . '@' . $ftpServer . '/' . $remoteFilePath;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $ftpUrl);
curl_setopt($curl, CURLOPT_UPLOAD, 1);
curl_setopt($curl, CURLOPT_INFILE, fopen($localFilePath, 'r'));
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($localFilePath));
curl_exec($curl);
curl_close($curl);

Метод 4: использование расширения SSH2
Если ваш FTP-сервер поддерживает SSH, вы можете использовать расширение SSH2 для безопасной загрузки файлов. Вот пример:

// Same setup as Method 1
$sshConnection = ssh2_connect($ftpServer);
ssh2_auth_password($sshConnection, $ftpUsername, $ftpPassword);
$sftp = ssh2_sftp($sshConnection);
$remoteFile = 'ssh2.sftp://' . $sftp . $remoteFilePath;
$localFile = fopen($localFilePath, 'r');
ssh2_scp_send($sshConnection, $localFile, $remoteFile, 0644);
fclose($localFile);

Метод 5: использование расширения FTPS
Чтобы установить безопасное соединение с FTP-сервером с использованием SSL/TLS, вы можете использовать расширение FTPS. Вот пример:

// Same setup as Method 1
$ftpConnection = ftp_ssl_connect($ftpServer);
ftp_login($ftpConnection, $ftpUsername, $ftpPassword);
ftp_put($ftpConnection, $remoteFilePath, $localFilePath, FTP_BINARY);
ftp_close($ftpConnection);

Метод 6. Использование библиотеки FTP Pure PHP
Библиотека FTP Pure PHP обеспечивает реализацию протокола FTP на чистом PHP. Вот пример:

// Same setup as Method 1
require('php-ftp.php');
$ftp = new Ftp();
$ftp->connect($ftpServer);
$ftp->login($ftpUsername, $ftpPassword);
$ftp->put($localFilePath, $remoteFilePath);
$ftp->close();

Метод 7: использование библиотеки Flysystem
Flysystem — это библиотека абстракции файловой системы, которая поддерживает несколько систем хранения, включая FTP. Вот пример:

// Same setup as Method 1
require('vendor/autoload.php');
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Ftp;
$adapter = new Ftp([
    'host' => $ftpServer,
    'username' => $ftpUsername,
    'password' => $ftpPassword,
]);
$filesystem = new Filesystem($adapter);
$filesystem->write($remoteFilePath, file_get_contents($localFilePath));

В этой статье мы рассмотрели семь различных способов загрузки файла на FTP-сервер с помощью PHP. В зависимости от ваших требований и функций, поддерживаемых вашим FTP-сервером, вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Предпочитаете ли вы использовать встроенные функции FTP в PHP или внешние библиотеки, такие как CURL, SSH2, FTPS, Pure PHP FTP или Flysystem, у вас есть несколько вариантов беспрепятственной загрузки файлов на FTP-сервер.

Включив эти методы в свои PHP-приложения, вы сможете эффективно передавать файлы на FTP-сервер и оптимизировать процессы управления файлами.