CONTATTACI

Guide per aspiranti programmatori

Lezione 27 / 30

Aprire e salvare file in Laravel

Laravel permette di accedere a file esistenti e salvare file attraverso un’ astrazione del file system che permette di interfacciarsi con file locali o remoti con le stesse modalità.

Ciò consente non solo di leggere e scrivere dal file system locale, FTP o AWS S3 nello stesso modo, ma anche nel caso di scegliere un’opzione diversa a seconda che si stia sviluppando o si stia eseguendo l’applicazione in produzione.

Configurazione dei disk in Laravel

Le applicazioni Laravel gestiscono l’accesso ai file tramite dei disk configurati nel file config/filesystems.php. Ogni disk ha un nome identificativo e un driver che permette di definire il tipo effettivo di file system collegato. In base al driver, poi, saranno configurabili altre opzioni. Per esempio, i disk con driver local richiedono l’impostazione della opzione root per indicare a quale effettiva directory locale corrispondono. Quelli con driver s3 richiedono l’impostazione delle varie key, secret, region e bucket per poter accedere ad AWS S3.

Tra i vari disk configurati di default, è d’interesse quello nominato public. Questo disk è pensato per ospitare quei file che devono essere resi pubblicamente accessibili dall’applicazione Laravel.

Per interagire con uno dei vari disk configurati è possibile usare la facade Storage. È possibile scegliere il disk con cui interagire tramite il metodo disk.

use Illuminate\Support\Facades\Storage;

// interagisce con il disk di default
Storage::put('orders/22341.pdf', $content);

// seleziona il disk
Storage::disk('s3')->put('backup/orders/22341.pdf', $content);

Interagire con i file in Laravel

Nell’esempio precedente abbiamo già mostrato il metodo put della facade Storage che permette di salvare un certo contenuto in un file.

Il contenuto di un file può essere recuperato tramite il metodo get. Il contenuto del file in questo caso è restituito sotto forma di stringa.

$contents = Storage::get('file.pdf');

if (Storage::disk('s3')->exists('file.jpg')) {
  // ...
}

È possibile verificare l’esistenza o l’assenza di un file tramite il metodo exist o il metodo missing, così come copiare, spostare o eliminare file con il metodo copy, il metodo move e il metodo delete.

Upload di file da web in Laravel

È possibile utilizzare un disk per permettere di caricare un file nella nostra applicazione. Un file inviato attraverso una request può essere salvato su uno disk disponibili dell’applicazione

class PictureController extends Controller
{
  // carica una immagine sul server
  public function uploadPicture(Request $request)
  {
    $path = $request
          // recupera della request il file indicato come "picture"
          ->file('picture')
          // lo memorizza sullo disk di default nella directory "pictures"
          ->store('pictures');

    // usare $path del file salvato, per esempio salvarlo a db
    // ...
  }
}

È importante notare che tramite il metodo store il file recuperato nella request viene salvato sul disk generando anche un ID univoco per il nome del file, mentre l’estensione del file è ricavata dal tipo MIME fornito della request. Il metodo store restituisce il path del file salvato, che può essere, quindi, salvato o utilizzato. Nel caso in cui si voglia specificare il nome del file è possibile usare il metodo storeAs.

È, ovviamente, possibile passare sia a store che a storeAs anche il disk in cui salvare, tra i vari configurati.

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.