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!
php laravel stroage putfileas
Commentami!