martes, 26 de mayo de 2020

Imágenes en Laravel

En el controlador:

$request->file('avatar')->store('public');

Si inspeccionamos la imagen:

dd($request->file('avatar')->store('public'));

Nos va a aparecer :
public/nombredelaimagen.jpg

Luego de guardar el archivo en la carpeta public, nos devuelve la ubicacion del archivo
Pero si ponemos ese link en src="" nos va a aparecer una imagen rota, porque?

Desde el navegador, SOLO TENEMOS ACCESO A LA CARPETA PUBLIC !,
tenemos que enlazar mediante un link a la carpta storage con la carpeta public,
Si en la consola escribimos:
php artisan storage:link nos dice que nos crea un symbolic link , y cada vez que entremos en la carpeta public vamos a estra entrando a storage
Este comando lo tenemos que usar desde homestead, ya que desde nuestra maquina no va a funcionar, excepto que usemos valet o laragon, que no habra problemas.
Lo ejecutamos desde la terminal
php artisan storage:link

Ahora para acceder a la imagen debemos ir a la carpeta storage y luego al archivo y desde la raiz podemos omitir la carpeta public, ahora si actualizamos veremos la imagen:

 <img src="/storage/nombre_de_la_Imagen.jpg" />

En lugar de escribir manualmente el nombre de la imagen:
  <img src="/storage/{{$user->avatar.jpg}}" />

PERO SI NOS VAMOS A ACTUALIZAR YA NO FUNCIONA, ES ASI COMO DEBEMOS HACER:
 Si le pasamos la imagen por defecto:
<img src="{{ Storage::url(default.jpg') }}" />
Si le pasamos la imagen dinamicamente:

<img src="{{ Storage::url($user-avatar) }}" />
Osea es asi como funciona perfectamente !

Ahora, si queremos guardar otrod datos y no guardamos imagen , nos va a dar un error porque la imagen esta nula; vamos a hacer una verfificacion con este metodo:

if($request->hasFile('avatar'){
$user->avatar = $request->file('avatar')->store('public');
}

No hay comentarios:

Publicar un comentario

Creando plugin Wordpress - 03

  11- USUARIOS -Para crear un usuario lo mas facil desde el admin- FUNCIONES PARA AGREGAR USUARIO: wp_create_user ( string  $username , stri...