✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak przesłać obrazy na inny serwer przez FTP w Laravel?

25

Czy chcesz przesłać pliki z aplikacji Laravel na inny serwer przez FTP? Laravel ma wbudowaną obsługę przesyłania plików na zewnętrzny serwer lub chmurę. W tym przewodniku pokazujemy, jak przesyłać pliki (obrazy) na inny serwer przez FTP w witrynie Laravel.

Umieszczenie obrazów na innym serwerze może pomóc w zwiększeniu szybkości witryny. Ta technika to rodzaj równoległego połączenia między przeglądarką internetową a serwerami. Zmniejsza obciążenie z jednego serwera, ponieważ w przypadku obrazów przeglądarka będzie dzwonić do innego serwera.

Laravel Filesystem zapewnia wygodny sposób zarządzania naszymi plikami w chmurze lub serwerze zewnętrznym. Użytkownik może wybrać różnych dostawców pamięci masowej Laravel, takich jak S3, Rackspace, FTP lub SFTP. Przyjrzyjmy się przesyłaniu plików Laravel za pomocą sterownika FTP.

Prześlij pliki na inny serwer za pomocą sterownika FTP

Aby rozpocząć, powinieneś znać dane swojego hosta FTP, nazwę użytkownika FTP i hasło FTP. Gdy jesteś gotowy ze szczegółami, otwórz .envpliki i dodaj szczegóły, jak poniżej:

FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE

Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi wartościami. Następnie otwórz config/filesystems.phpplik i dodaj konfigurację ‘ftp’ do tablicy ‘disk’.

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
        ],
    ],
     
];

Zastąp DIR_PATH_TO_WHERE_IMAGE_STORE rzeczywistą ścieżką, w której chcesz przechowywać obrazy. Na przykład, jeśli mamy folder o nazwie „images", a ścieżka do tego folderu to /var/www/html/dev/images, to ta ścieżka będzie traktowana jako wartość „root” w powyższej tablicy.

Do przesyłania plików przez FTP potrzebujemy formularza, w którym użytkownik może przesłać obraz. Dodaj poniższy kod do pliku widoku.

<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>

Należy zastąpić PASS_ACTION_URL_HERE rzeczywistą trasą. Ponieważ używamy Laravel Storage do wgrywania plików, użytkownik musi dodać Fasada do pliku kontrolera w następujący sposób:

use IlluminateSupportFacadesStorage;

Wreszcie kod funkcji kontrolera będzie taki, jak poniżej:

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’ to nazwa naszego pliku wejściowego. Budujemy unikalną nazwę naszego pliku, a następnie przesyłamy go na zewnętrzny serwer. Zauważ, że użyliśmy metody Storage::disk(‘ftp’). Ta funkcja przechowałaby nasz plik w ścieżce zdefiniowanej w konfiguracji. Użytkownik powinien przechowywać wartość „$filenametostore” w Twojej bazie danych.

Pobierz lub usuń obraz

Mamy do czynienia z obrazami, więc oczywiście musimy je wyświetlić na stronie. Ponieważ przechowujemy te obrazy na znanym serwerze zewnętrznym, użytkownik powinien znać ścieżkę HTTP do folderu, w którym przechowujemy obrazy. Może to być adres TWOJA_DOMAIN_URL/obrazy/. W metodzie kontrolera powinniśmy przechowywać nazwę obrazu w bazie danych. Tak więc nasz tag HTML img będzie wyglądał następująco:

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

Tutaj FILE_NAME to nazwa Twojego obrazu przechowywana w bazie danych. Użytkownik może usunąć plik w następujący sposób:

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

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów