...
✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come caricare immagini su un altro server tramite FTP in Laravel

31

Vuoi caricare i tuoi file dalla tua applicazione Laravel su un altro server tramite FTP? Laravel viene fornito con il supporto integrato per il caricamento di file su server o cloud esterni. In questa guida, ti mostriamo come caricare file (immagini) su un altro server tramite FTP nel sito Web di Laravel.

Ospitare immagini su un altro server può aiutare a migliorare la velocità del tuo sito. Questa tecnica è una sorta di connessione parallela tra un browser Web e i server. Riduce il carico da un server poiché per il browser delle immagini verrà chiamato un altro server.

Laravel Filesystem fornisce un modo conveniente per gestire i nostri file sul cloud o su un server esterno. L’utente può scegliere diversi provider di archiviazione Laravel come S3, Rackspace, FTP o SFTP. Diamo un’occhiata al caricamento di file Laravel utilizzando il driver FTP.

Carica file su un altro server tramite driver FTP

Per iniziare, dovresti conoscere i dettagli del tuo host FTP, nome utente FTP e password FTP. Una volta che sei pronto con i dettagli, apri i .envfile e aggiungi i dettagli come di seguito:

FTP_HOST=YOUR_FTP_HOST_VALUE
FTP_USERNAME=YOUR_FTP_USERNAME_VALUE
FTP_PASSWORD=YOUR_FTP_PASSWORD_VALUE

Assicurati di sostituire i segnaposto con i valori effettivi. Quindi, apri il config/filesystems.phpfile e aggiungi la configurazione ‘ftp’ all’array ‘disks’.

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

Sostituisci DIR_PATH_TO_WHERE_IMAGE_STORE con il percorso effettivo in cui devi memorizzare le immagini. Ad esempio, se abbiamo una cartella chiamata "images" e il percorso di questa cartella è /var/www/html/dev/images, questo percorso andrà come valore per "root" nell’array sopra.

Per caricare i file tramite FTP abbiamo bisogno di un modulo in cui un utente può inviare l’immagine. Aggiungi il codice seguente nel file di visualizzazione.

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

Dovresti sostituire PASS_ACTION_URL_HERE con il tuo percorso effettivo. Poiché stiamo utilizzando un Laravel Storage per il caricamento dei file, l’utente deve aggiungere Facade al file del controller come segue:

use IlluminateSupportFacadesStorage;

Infine, il codice funzione del controller sarebbe il seguente:

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’ è il nome del nostro file di input. Costruiamo il nome univoco del nostro file e poi lo carichiamo su un server esterno. Nota che abbiamo usato il metodo Storage::disk(‘ftp’). Questa funzione memorizzerà il nostro file nel percorso definito nella configurazione. Un utente dovrebbe memorizzare il valore ‘$filenametostore’ nel tuo database.

Recupera o elimina immagine

Abbiamo a che fare con le immagini, quindi, ovviamente, dobbiamo visualizzare queste immagini sul sito web. Poiché stiamo memorizzando queste immagini sul server esterno noto, un utente dovrebbe conoscere il percorso HTTP della cartella in cui memorizziamo le immagini. Può essere qualcosa come YOUR_DOMAIN_URL/images/. Nel metodo controller, dovremmo memorizzare il nome dell’immagine nel database. Quindi il nostro tag HTML img sarà come segue:

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

Qui FILE_NAME è il nome della tua immagine memorizzato nel database. L’utente può eliminare il file nel modo seguente:

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

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More