Upload dei files in Laravel

Mattepuffo's logo
Upload dei files in Laravel

Upload dei files in Laravel

Una cosa che mi è piaciuta molto in Laravel è l'API per lo storage.

Facile da usare e senza fronzoli.

Oggi vediamo come fare l'upload dei files; tenete presente che sto usando Laravel come Web API per Angular, e non come un stio web "standard".

La prima cosa che ho fatto è creare un controller apposito:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class UploadController extends Controller {

    public function documentoLavoro(Request $req) {
        $data = $req->all();
        $codice = $data['codice'];

        $uploadedFile = $req->file('file');
        $ext = $uploadedFile->getClientOriginalExtension();
        $fileName = $codice . date('YmdHis') . '.' . $ext;

        try {
            Storage::disk('local')->putFileAs(
                'files',
                $uploadedFile,
                $fileName
            );

            return response()->json([
                'res' => 'ok',
                'message' => 'File caricato correttamente',
                'nome_file' => $fileName
            ]);
        } catch (\RuntimeException $ex) {
            return response()->json([
                'res' => 'ko',
                'message' => 'Errore: ' . $ex->getMessage()
            ]);
        }

    }

}

Come vedete ritorno un JSON come risposta.

Nel mio caso invio un body di tipo form-data, con due campi:

  • uno di tipo file, che si chiama proprio file (che fantasia)
  • uno di tipo stringa che si chiama codice

I file vengono salvati tramite Storage e la funzione putFileAs; ho usato questa perchè imposto un nome custom al file.

Di default vengono salvati in storage/app; io ho impostato anche una sotto cartella.

Poi ho aggiunto una route:

Route::group(["prefix" => "upload"], function () {
    Route::post('/documento', [UploadController::class, 'documentoLavoro']);
});

Enjoy!


Condividi

Commentami!