✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як завантажити зображення на інший сервер через FTP в Laravel

28

Ви хочете завантажити свої файли із програми Laravel на інший сервер через FTP? Laravel має вбудовану підтримку для завантаження файлів на зовнішній сервер або хмару. У цьому посібнику ми покажемо вам, як завантажувати файли (зображення) на інший сервер через FTP на веб-сайті Laravel.

Розміщення зображень на іншому сервері може допомогти покращити швидкість вашого веб-сайту. Ця техніка є свого роду паралельним з’єднанням між веб-браузером та серверами. Це зменшує навантаження з одного сервера, оскільки для зображень браузер буде дзвонити на інший сервер.

Файлова система Laravel забезпечує зручний спосіб управління нашими файлами в хмарі або на зовнішньому сервері. Користувач може вибрати різних постачальників сховищ Laravel, таких як S3, Rackspace, FTP або SFTP. Давайте подивимось на завантаження файлу Laravel за допомогою драйвера FTP.

Завантажте файли на інший сервер через драйвер FTP

Для початку вам слід знати деталі вашого FTP-хоста, імені користувача FTP та пароля FTP. Після того, як ви готові з деталями відкрити .envфайли та додати деталі, як показано нижче:

FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE

Обов’язково замініть заповнювачі фактичними значеннями. Далі відкрийте config/filesystems.phpфайл і додайте конфігурацію "ftp" до масиву "диски".

config / filesystems.php

<?php
return [
    ......
    'disks' => [
        ......
        'ftp' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST'),
            'username' => env('FTP_USERNAME'),
            'password' => env('FTP_PASSWORD'),
            'root' => 'DIR_PATH_TO_WHERE_IMAGE_STORE' // for example: /var/www/html/dev/images
        ],
    ],
     
];

Замініть DIR_PATH_TO_WHERE_IMAGE_STORE фактичним шляхом, де потрібно зберігати зображення. Наприклад, якщо у нас є папка з назвою ‘images’, а шлях до цієї папки / var / www / html / dev / images, тоді цей шлях буде використовуватися як значення для ‘root’ у наведеному вище масиві.

Для завантаження файлів через FTP нам потрібна форма, де користувач може подати зображення. Додайте наведений нижче код у файл перегляду.

<form action="{{ url('PASS_ACTION_URL_HERE') }}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" name="profile_image" id="exampleInputFile" multiple />
    </div>
    {{ csrf_field() }}
    <button type="submit" class="btn btn-default">Submit</button>
</form>

Вам слід замінити PASS_ACTION_URL_HERE на ваш фактичний маршрут. Оскільки ми використовуємо сховище Laravel для завантаження файлу користувачеві потрібно додати Facade до файлу контролера наступним чином:

use IlluminateSupportFacadesStorage;

Нарешті, код функції вашого контролера буде таким, як показано нижче:

public function store(Request $request)
{
    if($request->hasFile('profile_image')) {
         
        //get filename with extension
        $filenamewithextension = $request->file('profile_image')->getClientOriginalName();
 
        //get filename without extension
        $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
 
        //get file extension
        $extension = $request->file('profile_image')->getClientOriginalExtension();
 
        //filename to store
        $filenametostore = $filename.'_'.uniqid().'.'.$extension;
 
        //Upload File to external server
        Storage::disk('ftp')->put($filenametostore, fopen($request->file('profile_image'), 'r+'));
 
        //Store $filenametostore in the database
    }
 
    return redirect('images')->with('status', "Image uploaded successfully.");
}

‘profile_image’ – це ім’я нашого файлу. Ми створюємо унікальне ім’я нашого файлу, а потім завантажуємо його на зовнішній сервер. Зверніть увагу, що ми використовували метод Storage :: disk (‘ftp’). Ця функція зберігатиме наш файл у шляху, визначеному в конфігурації. Користувач повинен зберігати значення ‘$ filenametostore’ у вашій базі даних.

Отримати або видалити зображення

Ми маємо справу із зображеннями так очевидно, що нам потрібно відображати ці зображення на веб-сайті. Оскільки ми зберігаємо ці зображення на відомому зовнішньому сервері, користувач повинен знати шлях HTTP до папки, де ми зберігаємо зображення. Це може бути щось на зразок YOUR_DOMAIN_URL / images /. У методі контролера ми повинні зберігати ім’я зображення в базі даних. Отже, наш тег HTML img матиме наступне:

<img src="YOUR_DOMAIN_URL/images/FILE_NAME" />

Тут FILE_NAME – це ваше ім’я зображення, яке зберігається в базі даних. Користувач може видалити файл наступним чином:

Storage::disk('ftp')->delete('FILE_NAME');

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі