Як перенести файли на віддалений сервер у 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