Actualmente, la mayoría de aplicaciones que utilizamos hoy en día cuentan con la funcionalidad de trabajar con archivos que subimos a éstas, ya sea vídeos (Youtube), envío de documentos (Gmail), subir una imagen (Facebook) o simplemente para guardar archivos en la misma (Google drive).
En este artículo, aprenderemos como subir y guardar archivos en nuestra aplicación Laravel.
Lo primero que vamos a hacer, será crear un formulario con un único campo de tipo file, con el que elegiremos el archivo que queremos subir a nuestra aplicación:
<form method="POST" action="{{route('subir')}}" accept-charset="UTF-8" enctype="multipart/form-data">
{{ csrf_field() }}
<label for="archivo"><b>Archivo: </b></label><br>
<input type="file" name="archivo" required>
<input class="btn btn-success" type="submit" value="Enviar" >
</form>
Una vez hecho esto, crearemos una ruta y una función en el controlador que queramos:
Creamos la ruta con nombre subir, que es a la que estamos haciendo referencia en el atributo action de nuestro formulario:
Route::post('/subir','Controller@subirArchivo')->name('subir');
Por último, crearemos una función con nombre subirArchivo, que recibirá mediante request nuestro archivo:
...
...
//recordar añadir Request en el que caso que nuestro controlador no lo tenga importado
use Illuminate\Http\Request;
class Controller extends BaseController
{
...
public function subirArchivo(Request $request)
{
//Recibimos el archivo y lo guardamos en la carpeta storage/app/public
$request->file('archivo')->store('public');
dd("subido y guardado");
}
}
Ahora que ya tenemos nuestro archivo guardado, podemos encontrarlo en la ruta storage/app/public pero para poder acceder a el mediante nuestra aplicación, debemos indicarle a laravel que queremos hacer uso de la carpeta storage, para ello debemos ejecutar este comando:
php artisan storage:link
Y de esta forma, ahora podremos llamar a estos archivos en nuestra vista.
Un ejemplo muy rápido para ver que nuestra carpeta storage es accesible, sería subir una imagen y llamarla:
<img src="/storage/nombreGeneradoDeNuestaImagen.png" alt="image">
Como podemos ver, no hace falta añadir storage/app/public, simplemente añadiendo storage y el nombre del archivo sería suficiente.
Sí te ha gustado está entrada, visita la continuación de este artículo: Comprimir archivos en Laravel , donde aprenderás a comprimir y descargar los archivos de una carpeta.