Как передавать файлы на удаленный сервер в PHP
Хранение файлов или изображений на внешнем сервере – обычное дело в настоящее время. Люди используют облачное хранилище, такое как AWS, Azure, Google Cloud, Backblaze, или собственный удаленный сервер для хранения файлов. В этом сценарии пользователь хранит файлы на другом сервере и вызывает его по ссылке на своем сервере приложений. Преимущество этого заключается в том, что это экономит полосу пропускания на сервере, что приводит к повышению его производительности.
Раньше, работая над клиентским проектом, мы использовали эту технику для хранения изображений на удаленном сервере. Клиент хотел отправить изображения на свой собственный внешний сервер и вызывать его из приложения, когда это необходимо. В этом случае нам нужно было сохранить путь к удаленному изображению в базе данных после его загрузки на удаленный сервер.
В этой статье мы покажем вам, как передавать файлы на удаленный сервер на PHP через FTP. В этом уроке мы используем изображения для загрузки. Пользователь может выбрать любой тип файла в соответствии со своими требованиями.
Начиная
Чтобы продолжить, у вас должны быть учетные данные FTP вашего сервера. Еще одно требование – композитор. Убедитесь, что в вашей системе установлен Composer. Вы собираетесь использовать пакет Flysystem, для установки которого требуется Composer.
Откройте терминал в корневом каталоге вашего проекта и выполните команду ниже.
composer require league/flysystem
После установки создайте HTML-форму с кнопкой ввода файла и отправки. Эта форма будет использоваться для просмотра изображения и отправки его на сервер.
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="image" /><br>
<input type="submit" name="submit" value="Submit">
</form>
Передача файлов на удаленный сервер
Вы установили библиотеку Flysystem, а также создали HTML-форму. Следующее, что нужно сделать, это взять изображение из входного файла и отправить его на удаленный сервер. Ваш upload.php
будет содержать приведенный ниже код.
<?php
require_once "vendor/autoload.php";
use LeagueFlysystemFilesystem;
use LeagueFlysystemAdapterFtp as Adapter;
if(isset($_POST['submit'])) {
if(isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
try {
$filesystem = new Filesystem(new Adapter([
'host' => 'HOST_NAME_HERE',
'username' => 'USERNAME_HERE',
'password' => 'PASSWORD_HERE',
]));
$stream = fopen($_FILES['image']['tmp_name'], 'r+');
$filesystem->putStream('public_html/images/'.$_FILES['image']['name'], $stream);
if (is_resource($stream)) {
fclose($stream);
}
echo "Image uploaded on external server successfully.";
} catch(Exception $e) {
echo $e->getMessage();
}
}
}
Замените заполнители фактическими значениями. Здесь мы храним изображения внутри public_html/images
каталога. Вы можете настроить этот путь в соответствии с вашими требованиями. В приведенном выше коде Flysystem подключается к вашему серверу через FTP, считывает содержимое изображения и помещает изображение по указанному пути.
Надеемся, вы узнали о том, как передавать файлы на удаленный сервер на PHP. Используя Flysystem, вы также можете передавать файлы на AWS S3, Azure, Dropbox и т.д. Вы можете узнать больше об этом пакете в их официальной документации.
Статьи по Теме
- Как загрузить изображения на другой сервер через FTP в Laravel
- Загрузка файлов в Amazon S3 с помощью AWS PHP SDK