Laravel

Una de las funciones más comunes cuando necesitamos realizar proyectos Web es que los usuarios tengan la posibilidad de subir archivos al servidor, ya sean imágenes o archivos, en este artículo veremos como subir archivos con Laravel 5.1, paso a paso veremos que hacer para tener a nuestra disposición un «Upload» sencillo que podemos ir ajustando y perfeccionando a nuestras necesidades, con este upload en Laravel podrás subir cualquier tipo de archivos (Imágenes, documentos, canciones, etc).

Como subir archivos con Laravel 5.1

1. Creando un proyecto: Para realizar este ejercicio primero debemos crear un proyecto, para realizar esta acción puedes hacer uso de este tutorial: Crear primer proyecto en Laravel Framework.

2. Definiendo ubicación de los archivos que subiremos: Abrimos el archivo filesystems.php, se encuentra en la carpeta config de tu proyecto, nos dirigimos a las líneas donde encontraremos unos discos ya configurados en Laravel:

‘disks’ => [

‘local’ => [
‘driver’ => ‘local’,
‘root’ => storage_path(‘app’),
],

Utilizaremos el disco local, que por defecto apunta a la carpeta app de la carpeta storage, lo cambiaremos a  public_path(‘uploads’), para utilizar la carpeta publica de Laravel y especificamos la carpeta uploads para subir los archivos, quedando:

🌟 ¡Visita Nuestra Tienda para Programadores! 🌟

Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!

Curso de Laravel Framework

‘local’ => [
‘driver’ => ‘local’,
‘root’ => public_path(‘uploads’),
],

Nota: La razón de cambiar al public_path es que al cargar nuestros archivos tendríamos ya el link directo para utilizar los ficheros, mientras que la carpeta storage es privada, Recuerda crear la carpeta uploads dentro de public.

3. Creando nuestra vista (upload.blade.php)

<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title></title>
</head>
<body>
<h2>Upload de Archivos en Laravel</h2>
<form method=»post» id=»frm» url=»upload» files=»true» enctype=»multipart/form-data»>
{{ csrf_field() }}
<label for=»Archivo»><b>Archivo: </b></label><input type=»file» name=»Archivo» required>
<input type=»submit» value=»Enviar» >
</form>
</body>
</html>

De las etiquetas anteriores debemos tener en cuenta que si queremos enviar archivos mediante el formulario necesitamos: files=»true» enctype=»multipart/form-data».

4. Creando el controlador (UploadController.php)

<?php namespace App\Http\Controllers;
class UploadController extends Controller {
public function index()
{
return view(‘upload’);
}
}

En el código del controlador hasta ahora solo tenemos la función index que se encargará de lanzar la vista «upload«.

5. Estableciendo la ruta para la vista upload

Para esto solo editamos el archivo routes.php y colocamos las rutas que usaremos:

<?php

Route::get(‘/’, function () {
return view(‘welcome’);
});

Route::get(‘upload’,’UploadController@index’); //Lanza la vista
Route::post(‘upload’,’UploadController@subir_archivo’); //Guarda los Archivos

Hasta este punto debemos poder acceder a la url que hemos establecido en las rutas, en mi caso sería: http://localhost/upload/public/upload.

Como subir archivos con laravel

6. Función subir_archivo en el controlador UploadController.php

Esta función la iremos haciendo paso a paso para ir probando el código, veamos:

Verificando si estamos recibiendo los archivos correctamente:

public function subir_archivo(Request $request)
 {
 $file = $request->file('Archivo');
 dd($file);
 }

Para este paso estamos utilizando Request, para ello debemos el namespace:

use Illuminate\Http\Request;

Probamos el código intentamos enviar un archivo y obtenemos:

Como subir imágenes con laravel

Estamos obteniendo un Objeto con la instancia UploadedFile, estamos recibiendo de forma correcta el archivo.

7. Subiendo el archivo de forma definitiva

Al comprobar que estamos recibiendo el archivo de forma correcta tan solo queda almacenarlo en la carpeta uploads, así:

 \Storage::disk(‘local’)->put($file,  \File::get($file));

Debes hacer uso también del facade:

use Illuminate\Support\Facades\Storage;

Selecciona un nuevo archivo y este debe guardarse en tu carpeta en el servidor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *