Перейти к содержимому

ftp_get()

Что такое ftp_get()?

Функция ftp_get() — это встроенная функция PHP, которая загружает файл с FTP-сервера и сохраняет его в локальный файл. Функция принимает пять параметров (три обязательных, два необязательных):

  1. ftp_stream: Идентификатор соединения, возвращаемый функцией ftp_connect().
  2. local_file: Имя локального файла, в который следует сохранить полученные данные.
  3. remote_file: Имя удалённого файла, который необходимо получить с FTP-сервера.
  4. mode: Режим передачи. Используйте FTP_BINARY для двоичных файлов или FTP_ASCII для текстовых файлов.
  5. resumepos: Начальная позиция передачи (по умолчанию 0).

Функция возвращает логическое значение. Если функция успешно получает файл, она возвращает true. В противном случае возвращается false.

Синтаксис ftp_get()

Синтаксис функции ftp_get() выглядит следующим образом:

Синтаксис ftp_get() в PHP

php
bool ftp_get ( resource $ftp_stream , string $local_file , string $remote_file [, int $mode = FTP_BINARY [, int $resumepos = 0 ]] )

Примечание: В PHP 8.1+ тип resource для FTP-соединений устарел в пользу объектов Ftp\Connection. Устаревший синтаксис resource сохранён здесь для обратной совместимости.

Функция ftp_get() принимает пять параметров: ftp_stream, local_file, remote_file, mode и resumepos. Параметр ftp_stream — это идентификатор соединения, возвращаемый функцией ftp_connect(). Параметр local_file — это имя локального файла, в который следует сохранить полученные данные. Параметр remote_file — это имя удалённого файла, который необходимо получить с FTP-сервера. Параметр mode — это необязательный параметр, указывающий режим передачи, а параметр resumepos — это необязательный параметр, указывающий начальную позицию передачи. Для большинства файлов (изображений, архивов, исполняемых файлов) рекомендуется FTP_BINARY, тогда как FTP_ASCII требуется только для обычных текстовых файлов и выполняет автоматическое преобразование символов конца строки.

Применение ftp_get()

Чтобы использовать функцию ftp_get(), сначала необходимо установить соединение с FTP-сервером с помощью функции ftp_connect(). Вот пример:

Применение ftp_get() в PHP

php
<?php
// Set up an FTP connection
$conn = @ftp_connect('ftp.example.com');
if (!$conn) {
    die("Could not connect to FTP server.");
}

// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
    die("Login failed.");
}

// Retrieve a remote file and save it to a local directory
if (ftp_get($conn, '/local/directory/local_file.txt', 'remote_file.txt', FTP_BINARY)) {
    echo "File retrieved successfully.\n";
} else {
    echo "Failed to retrieve the file.\n";
}

// Close the FTP connection
ftp_close($conn);

В этом примере мы устанавливаем соединение с FTP-сервером с помощью функции ftp_connect() и проверяем его успешность. Затем мы входим в систему, используя учётные данные FTP, с помощью функции ftp_login(), и проверяем наличие ошибок входа. Наконец, мы получаем удалённый файл и сохраняем его в локальную директорию с помощью функции ftp_get() в режиме FTP_BINARY, а затем закрываем FTP-соединение.

Обработка ошибок в ftp_get()

При использовании функции ftp_get() важно правильно обрабатывать ошибки. Если функция возвращает false, это означает, что файл не удалось получить по какой-либо причине. Вот пример обработки ошибок:

Обработка ошибок в ftp_get()

php
<?php
if (ftp_get($conn, '/local/directory/local_file.txt', 'remote_file.txt', FTP_ASCII) === false) {
    echo "Failed to retrieve the file.\n";
} else {
    echo "File retrieved successfully.\n";
}

В этом примере мы проверяем возвращаемое значение функции ftp_get(). Если оно равно false, выводим сообщение об ошибке; в противном случае выводим сообщение об успехе.

Заключение

Подводя итог, функция ftp_get() — это полезная встроенная функция PHP, которая позволяет загружать файл с FTP-сервера и сохранять его в локальный файл. Следуя рекомендациям и лучшим практикам, изложенным в этой статье, вы сможете уверенно использовать функцию ftp_get() в своих PHP-проектах.

Practice

Что делает функция FTP_GET в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.