Imágenes
1. Configurar sistema de archivos del proyecto
Crear carpeta donde se almacenarán las imágenes, para este caso public/img.
Ignorar imágenes y archivos que se creen en esa carpeta, para evitar que al momento de sincronizar con el repositorio en GitHub se suban dichos archivos. Así, se debe crear un archivo public/img/.gitignore; este ignora todo excepto el archivo en sí
Editar archivo config/filesystems.php
Dentro de disks crear un nuevo sistema de archivos que almacene, en una carpeta especificada por nosotros, las imágenes
Establecer sistema de archivos por defecto, para esto se debe configurar el atributo default. Esto se puede hacer de dos maneras:
Utilizar el archivo de environment .env, configurando la variable FILESYSTEM_DRIVER:
config/filesystems.php
.env
Nota: los cambios realizados al .env deben agregarse al archivo .env.example
o directamente dentro del archivo config/filesystems.php
2. Guardar archivos
Editar SellerProductController
Almacenar imagen usando método store del administrado de archivos de laravel, en el método store del controlador añadir
El método store recibe dos parámetros:
_Ubicación donde se guardará la imagen: _relativo respecto al root fijado en el sistema de archivos. En este caso se guardará dentro de img directamente.
_Sistema de archivos a utilizar: _al tener por defecto images no es necesario especificarlo.
Además store genera un nombre aleatorio y único para la imagen.
3. Eliminar archivos
Editar SellerProductController
Para eliminar imagen asociada a un producto cuando este es eliminado, importar el facade Storage
y dentro del método destroy, eliminar la imagen y luego el producto
4. Actualizar archivos
Editar SellerProductController
Para actualizar la imagen, es complejo determinar si la imagen subida es igual a la que se tenía previamente, por tanto la actualización consiste en eliminar la antigua imagen y almacenar la enviada por el usuario.
En el método update del controlador, antes de verificar que hubo cambios y guardarlos
Añadir
*Usar hasFile para determinar si la petición contiene algún archivo en el input llamado image
5. Probar con Postman
En el caso de actualizar un archivo, postman no permite enviar archivos usando x-www-form-urlencoded, por tanto se debe hacer una petición post y añadir al body un campo llamado .method con valor put
Crear producto
Actualizar producto
*Importante verificar que no tenga la cabecera Content-Type = application/x-www-form-urlencoded
Last updated
Was this helpful?