09 - Subir imágenes - Aprende Laravel Livewire desde cero

Поделиться
HTML-код
  • Опубликовано: 11 апр 2021
  • En este capítulo, aprenderás a agregar la funcionalidad de subida de imágenes a tus componentes de Livewire.
    ------------------------------------------------------------------------------------------------
    CURSOS
    🔴 Facturacion electronica Perú: youtube.codersfree.com/larave...
    🟠 Laravel avanzado: youtube.codersfree.com/larave...
    🟢 Ecommerce: youtube.codersfree.com/ecommerce
    🔵 Api: youtube.codersfree.com/api-re...
    🟠 Plataforma de cursos: youtube.codersfree.com/plataf...
    🔴 Vue e Ineria: youtube.codersfree.com/vue-3-...
    🟣 Eloquent Avanzado: youtube.codersfree.com/eloque...
    🟡 Pasarela de pagos: youtube.codersfree.com/pasare...
    ⚫ Laravel Web Socket: youtube.codersfree.com/larave...
    🟣 Notificaciones: youtube.codersfree.com/notifi...
    🟢 Laravel Excel: youtube.codersfree.com/larave...
    🔵 Digital Ocean: youtube.codersfree.com/despli...
    🟡 Laravel Voyager: youtube.codersfree.com/larave...
    🟣 Datatable Livewire: youtube.codersfree.com/datata...
    🟠 Tenancy for Laravel: youtube.codersfree.com/multi-...
    🔵 TDD Laravel: youtube.codersfree.com/tdd-la...
    ⚫ Traducir páginas: youtube.codersfree.com/traduc...
    🟠 Wire UI: youtube.codersfree.com/livewi...
    🔴 Acortador de links: youtube.codersfree.com/acorta...
    🟡 Banhammer for laravel: youtube.codersfree.com/banham...
    🟢 Laravel backup: youtube.codersfree.com/larave...
    🔵 Actualizar a Laravel 10: youtube.codersfree.com/actual...
    -----------------------------------------------------------------------
    DONACIONES
    Patreon: / codersfree
    PayPal: www.paypal.com/paypalme/Coder...
    ------------------------------------------------------------------------------------------------
    Grupo Facebook: / 4314830498588670
    Plataforma: codersfree.com/
  • НаукаНаука

Комментарии • 71

  • @CodersFree
    @CodersFree  3 года назад +8

    Si faker les está dando problemas a la hora de descargar las imagenes, hagan lo siguiente.
    Abrán el siguiente archivo: vendor\fakerphp\faker\src\Faker\Provider\Image.php
    y a partir de la linea 106 agregen estás dos lineas de código:
    curl_setopt($ch, CURLOPT_FILE, $fp); //línea existente
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//nueva línea
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//nueva línea
    $success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;//línea existente
    Esto les solucionará el problema, y podrán seguir con el curso de manera normal.

    • @anthonysuarez9895
      @anthonysuarez9895 3 года назад +1

      me sigue tirando el mismo error que podria hacer??

    • @markbowhill
      @markbowhill 2 года назад +8

      @@anthonysuarez9895 Cuando la migracion no puede crear la carpeta le cambio el FILESYSTEM_DRIVER=local a FILESYSTEM_DRIVER=public en el archivo .env además de cambiarselo en el filesystems.php Espero te sirva

    • @maytechnologies9504
      @maytechnologies9504 2 года назад

      @@markbowhill gracias brother... ya me estaba sacando canas verdes este error...

    • @andressevillanomolina6866
      @andressevillanomolina6866 2 года назад

      @@maytechnologies9504 me dejas ver :'v

    • @jedatobe
      @jedatobe 2 года назад +1

      No funciona. Crea el archivo y luego lo elimina. No entiendo por qué.

  • @yubervasquez
    @yubervasquez 3 года назад

    Cómo siempre un máster.
    Muchas gracias Víctor

  • @ardinalgiancarlo9145
    @ardinalgiancarlo9145 3 года назад

    De maravilla como siempre, mil gracias por tus aportes

  • @omartrevi
    @omartrevi 3 года назад

    Super, excelente video, muchísimas gracias Víctor Arana

  • @MiguelAngelRebazaApaza
    @MiguelAngelRebazaApaza 3 года назад

    Muchas gracias Victor!!! exitos!

  • @raymondmerconchini9911
    @raymondmerconchini9911 7 месяцев назад

    Hola, muy buenos videos, muchas gracias de parte de todos los futuros programadores que ya apreciamos de tus aportes. Para solucionar el renderizado del input se puede basar en el valor de la variable $open y condicionar el id asi, id='{{$open ?'x' : 'xx'}}' de esta forma al abrirse la ventana el input tendrá un id='x' y al cerrarla tendrá otro id='xx', por lo que se anula el valor cargado. Saludos

  • @david.t.v9211
    @david.t.v9211 2 года назад +3

    Para los que aún no les sale error aun cambiando los archivos hagan lo siguiente: primero si se dan cuenta el tiene un acceso directo a la carpeta storage en public, entonces una vez que lo ejecutan y sale el error verifiquen que les haya creado la carpeta public/posts en el storage/app, una vez hecho eso en su proyecto abran el terminal y ejecuten php artisan storage:link, una vez creado el link verifiquen que no hay ningún espacio en su url --> 'image'=>"posts/". $this->faker->image("public/storage/posts",640,480,null,false), una vez hecho esto ya se cargarán las imagen, espero les sirva, saludos.

  • @latlov
    @latlov 2 года назад +2

    19:50 Explicación ¿Por qué Livewire no resetea el nombre del archivo seleccionado en el input file?
    Los inputs del tipo file, tienen la propiedad de ser inmutables. Cuando Livewire renderiza el contenido de una vista, solo incluye aquellas cosas que han cambiado. Debido a que dichos inputs son inmutables, Livewire no los cambia (no los resetea).
    20:20 Workaround: Para hacer que el nombre del archivo del input file se reinicie o resetee, hay que definir una nueva propiedad desde el método mount() en donde le asignamos un número aleatorio. Dicho valor lo asociamos al identificador del input file y que se reemplace cada vez que se resetee el formulario.
    Entonces, cada vez que Livewire vea un input con un ID distinto, lo va areemplazar por otro y, por ende, va a resetear el nombre del archivo del input file.

  • @ricardovargasvargas3232
    @ricardovargasvargas3232 2 года назад +4

    Para los que tengan problemas en InvalidArgumentException
    Cannot write to directory "public/storage/posts", modifiquen a Storage::deleteDirectory('posts');
    Storage::makeDirectory('posts') a Storage::deleteDirectory('public/posts');
    Storage::makeDirectory('public/posts');

  • @camiloloaiza3680
    @camiloloaiza3680 2 года назад +2

    si tienen error con las imagenes de los seeders, esto lo solucionara - php artisan storage:link

  • @Kharis1992
    @Kharis1992 3 года назад +3

    Hola!!! Tu canal es excelente, me ha ayudado mucho y te lo agradezco, tengo una pregunta, ¿tienes algún curso dónde se puedan almacenar y recuperar las imagenes en algún servidor como Cloudinary usando Livewire?

  • @ArgFernando
    @ArgFernando Год назад

    En mi caso fallo la primera vez, recuerdo que en los primeros capítulos hablo y menciono sobre la carpeta storage. Al revisar mi proyecto me di cuenta que el vinculo simbólico en la carpeta public no existia, asi que configure correctamente la variable APP_URL dentro de mi archivo .env, y luego con el comando -> php artisan storage:link , laravel creo el vinculo simbólico resolviendo el primer problema. Despues también me vi obligado a modificar el archivo que image.php de la libreria de Faker (como indica el tutor en el comentario destacado), agregando esas dos lineas extras para que definitivamente se graben los archivos.

  • @aztecsavo82
    @aztecsavo82 3 года назад

    por si te sirve de algo en el minuto 19:24 se pierde un poco el audio como que pierde la configuración tu micrófono o no se pero si cambia un poco la calidad aun así se entiende claramente, están muy buenos tus vídeos muchas gracias Saludos!!!

    • @CodersFree
      @CodersFree  3 года назад +1

      Hola Ivan, gracias.
      Si estoy teniendo problemas con el microfono debido a que el microfono que me compre es un microfono usb condensador.
      Este microfono no se conecta con una interfaz por lo que depende netamente de la tarjeta de audio.
      El broblema es que yo trabajo con una laptop por lo que no es posible cambiarlo. Estoy pensando comprarme una computadora e ir armandolo con las especificaciones que necesite. Espero sea la próxima semana

  • @aeggo8
    @aeggo8 3 года назад +14

    Hace poco estaba siguiendo los pasos de este vídeo y obtuve un error que aparecía en la parte de ejecutar el seed en la BD. Lo pude solucionar cambiando el valor de la variable FILESYSTEM_DRIVER de local a public. Esa variable está en el archivo ".env". No funcionó lo de cambiar el archivo de la librería faker como dijo Victor, así que deshice ese cambio Espero les ayude

    • @peruwebsite6268
      @peruwebsite6268 3 года назад

      Gracias Diego! Justo estaba buscando más información sobre el mismo error!

    • @dementexe562
      @dementexe562 3 года назад +1

      gracias bro!...✌🏼

    • @marianomole9872
      @marianomole9872 3 года назад

      bien ahi

    • @latlov
      @latlov 2 года назад

      Muchas gracias, eso sí me funcionó.
      Alguien sabe ¿Para qué cambiamos el nombre del disco de "local" a "public"?

    • @aeggo8
      @aeggo8 2 года назад +1

      @@latlov Según entendí, es para que las imágenes que está descargando faker se almacenen en el directorio proyecto/storage/app/public y no en proyecto/storage/app y así poder acceder a ella desde el navegador. Recuerda que el navegador solo puede acceder a la carpeta public debido a la naturaleza de Laravel. Creo que es algo así

  • @Radiosabines
    @Radiosabines 2 года назад

    Saludos Master, gracias a tus video cursos estoy implementado un blog en el que el blog tiene : tags , categorias e imagenes , sigo la BDD que usaste en el curso de laravel 8, por ahora no logro recuperar la relacion $post->image()->create para guardas las imagenes , como hacerlo en Livewire en el componente ? igual me ocurre con la relacion polymorfica entre los posts y los tags m-> muchos a muchos , debo usar attach , pero no lo logro ....

  • @CarlosSanchez-zs2xj
    @CarlosSanchez-zs2xj Год назад +1

    Hola, ya hice todo lo sugerido en los comentarios acerca de de cambiar el driver de local a public tanto en filesystems como en .env, agregué las dos líneas de código en el archivo Image.php en la carpeta vendor, hice todo y logré que ejecute el seeder pero lo que hace es crear el archivo de la imagen y luego borrarlo uno por uno hasta que la carpeta queda vacía...alguien me podría explicarme por qué hace eso? y que solución hay?

  • @walterleme1263
    @walterleme1263 2 года назад

    Excelente trabajo profe Victor! Le comento que tengo un error al momento de procesar las migraciones, mas precisamente cuando tiene que crear la carpeta posts. El error dice: Cannot write to directory "public/storage/posts". Para continuar con el curso cree manualmente la carpeta y luego todo funcionó correctamente. Gracias.

    • @felipesarmiento8508
      @felipesarmiento8508 2 года назад

      amigo, no se si ya lo solucionaste, pero de todas formas te intento ayudar, en mi caso, me salia ese mismo error, e investigué para solucionarlo y no encontré forma, pero estuve analizando el código y encontré que la carpeta posts se crea en otro directorio, entonces una solución facil fue cambiar en el archivo filesystem.php en la linea donde dice
      'public' => [
      'driver' => 'local',
      'root' => storage_path('app/public'), //Linea existente
      'url' => env('APP_URL').'/storage',
      'visibility' => 'public',
      ],
      cambiarlo por:
      'public' => [
      'driver' => 'local',
      'root' => storage_path('../'),
      'url' => env('APP_URL').'/storage',
      'visibility' => 'public',
      ],

    • @markbowhill
      @markbowhill 2 года назад +2

      Además de cambiar a public el FILESYSTEM_DRIVER del filesystems.php cambialo también en el .env de local a public espero te funcione, aunque ya lo debes haber resuelto

    • @freddyarriagacruz8987
      @freddyarriagacruz8987 2 года назад

      @@markbowhill esa era la solución.. muchas Gracias

    • @maytechnologies9504
      @maytechnologies9504 2 года назад

      @@markbowhill Exactamente...he alli el detallazo

  • @arturocoello1954
    @arturocoello1954 Год назад

    una pregunta devs, como hago para hacer focus al cargar el modal y se quede en el campo titulo, ya le puse autofocus en el input pero no me lo respeta

  • @juniordj_oficial
    @juniordj_oficial 2 года назад

    Que tal me pueden ayudar como puedo utilizar la img despues de subir a la base de datos

  • @edwardc9997
    @edwardc9997 2 года назад

    Hola bro, como puedo reproducir un video con livewire que esta alojado en mi hosting?
    Saludos

  • @cesar2297
    @cesar2297 3 года назад +1

    Hola , quisiera saber si haras algun curso de react o kotlin (explicas muy bien)

  • @fabiansb
    @fabiansb Год назад

    8:46 cómo haces para que al hacer click en ese link, te lo abra en otra pestaña del visual studio code? Cómo se llama la extensión que te permite hacer eso? Gracias.

  • @Tech_en_Progreso
    @Tech_en_Progreso 2 года назад

    Usando livewire se puede desabilitar un input?

  • @gadozx75
    @gadozx75 2 года назад

    Buenas , Y porque da error si se pasa de 2mb? que pasa si quiero subir una de 4mb? que tendria que hacer?

  • @richardaguirre5447
    @richardaguirre5447 2 года назад +1

    Se crea confusion en el acceso a la carpeta public/storage/posts lo que hice fue en el archivo .env colocar el FILESYSTEM_DRIVER=public y pude resolver temporalmente esto

    • @markbowhill
      @markbowhill 2 года назад +1

      Eso es porque en la versión de Laravel que se usa en el video la variable FILESYSTEM_DRIVER no existe en su archivo .env y por eso el sistema toma el valor del filesystems.php donde lo está editando, y por eso a el le funciona y a nosotros no ya que en nuestras versiones el cambio debe hacerse en el archivo .env y no en el filesystems.php o si quieres en ambos pero es innecesario cambiarlo en el filesystems.php ya que no lo tomará en cuenta porque tomará el del archivo .env

    • @andresmendoza7105
      @andresmendoza7105 2 года назад

      @@markbowhill gracias man

  • @andersondazazubieta9765
    @andersondazazubieta9765 2 года назад

    Hola Coders Free muchas gracias por el contenido que compartes, pero he presentado un problema en cuanto a la subida de las imágenes, no se pero cuando estas se guardan, se almacenas en la carpeta C:\xampp\htdocs\jet3\storage\app\posts y no en C:\xampp\htdocs\jet3\public\storage\posts, y como se están guardando en la carpeta que no es publica, al momento de llamar dichas imágenes no me cargan; entonces no se que me sugeriría, he intentado varias formas, pero creo que todo radica en el método storage() que se usa al momento de guardar las imágenes, pero este método no lo comprendo del todo.

    • @sebastianneiracastro5987
      @sebastianneiracastro5987 2 года назад +3

      Hola, supongo que para estas alturas ya lo resolviste... pero espero que sirva para quien también tenga esta duda.
      Cuando editas el archivo filesystems.php ('default' => env('FILESYSTEM_DRIVER', 'public '), /*local lo cambias por public*/ ) laravel cambia la ruta de almacenamiento a la carpeta storage/app/public. Cuando usas el método storage() este apunta a esa ruta, dentro del parentesis puedes definir en que carpeta guardar los archivos extendiendo la ruta según tus necesidades (storage('proyectos/2021') == guardara el archivo en storage/app/public/proyectos/2021)
      Ahora bien, para acceder a los archivos desde la aplicacion necesitas crear un link simbolico (una carpeta que sirva de acceso directo a la carpeta storage/app/public).
      Suena enredado pero en realidad solo necesitas ejecutar este comando = php artisan storage:link
      Esto creara el link simbolico en la carpeta public. Ahora usando el metodo asset('storage/...') accedes a storage/app/public. De ahi en adelante completas la ruta que necesites.
      Espero que a alguien le sirva... Igual dejo el link de la documentación de laravel que habla sobre esto.
      Saludos.
      laravel.com/docs/8.x/filesystem#the-public-disk

  • @beonzj3612
    @beonzj3612 2 года назад

    Hola, justo después de cargar la imagen en pantalla el input image en vez de mostrarme el nombre de la imagen seleccionada me dice "ningún archivo seleccionado". Durante el proceso de carga si me muestra el nombre, alguien sabe que pueda ser?

  • @yannpollet6009
    @yannpollet6009 3 года назад

    Hola Victor, y muchissimas gracias por tus cursos de alta calidad !
    Une preguntita : crees que seria posible en algun momento desarrolar una opcion que nos permitiria usar la camara del celular o de la tablet para subir una imagen ? Pienso que seria muy conveniente para muchas applicaciones y de verdad aun no tengo idea de como funccionaria autorizar el acceso a la camara (o porque no otros captores) para una applicacion Laravel.
    Otra vez gracias por todo el conocimiento que compartes con nosotros !

  • @ederluis9658
    @ederluis9658 3 года назад

    Hola profesor saludos muy buen curso, tengo el siguiente inconveniente no se me sincronizan las imágenes que se suben a la carpeta storage, con las de la carpeta storage del directorio public, ya probé con el comando "php artisan storage:link" y no funciona, hay alguna forma de solucionarlo. agradezco su ayuda...

    • @100kasuya
      @100kasuya 2 года назад

      entendi como funciona storage, si trabjas sobre ubuntu entras en cosola a la carpeta public y ejecutas ln -s ../storage/app/public/ storage esto creara una carpeta copia de la carpeta storage por otro lado limpia el cache php artisan config:clear y en la carpeta .env cambia mejor a public y tmb colocas el nombre de la web en mi caso livewire.loc

  • @warpig2786
    @warpig2786 2 года назад

    y para cargar mas de 1 archivo como le haces?

  • @robertoserrano7975
    @robertoserrano7975 3 года назад

    Al momento de agregar la imagen el modal se estira demasiado hacia abajo y se pierden de vista los botos de cancelar y guardar, al intentar darle scroll down se mueve el contenido de la pagina que se visualiza detras del modal y el modal no va hacia abajo y no puedo darle click a los botones, a alguien le esta pasando lo mismo? que me pueda ayudar, de antemano gracias.

  • @tirsolecointere
    @tirsolecointere 3 года назад +1

    Victor, hace poco en un proyecto me encontré en la necesidad de guardar automáticamente una imagen en la bbdd *justo después* de que la imagen ha sido procesada con livewire y se encuentra en la carpeta temporal. No logré encontrar una solución optima para eso. Alguna idea de como se podría lograr eso?

    • @CodersFree
      @CodersFree  3 года назад

      Claro, podrías jugar con el ciclo de vida de livewire. Que cuando el valor de la propiedad image cambie, automáticamente está se guarde en el disco en el cual estés trabajando.

    • @earhackerdem
      @earhackerdem 2 года назад

      @@CodersFree algo si como updatedImage(){
      image->store(....)
      y la lógica
      }
      yo le haría así

  • @ingleonelelizondo
    @ingleonelelizondo Год назад

    El error ahora es que se comienzan a crear las imágenes pero al final de la migración la borra. y queda la carpeta vacía. Ya hice la corrección en el Vendor. Y sigue igual.

  • @juliansuarez402
    @juliansuarez402 Год назад +1

    tengo el siguiente error The foto failed to upload. sin importar que seleccione me trae el mismo error y no me crea la carpeta tem

    • @ingleonelelizondo
      @ingleonelelizondo Год назад

      Yo tengo el mismo problema. No importa el tipo de archivo que intente subir ya cambie las reglas de validación y sigue igual.

    • @juliansuarez402
      @juliansuarez402 Год назад

      @@ingleonelelizondo este problema lo solucione de manera temporal ejecutando el comando php artisan serve ensaya es un error de livewire que no lee el archivo js

  • @chavezJRfan1998
    @chavezJRfan1998 3 года назад +1

    Hola, de casualidad sabes por qué Storage::makeDirectory('posts') no me crea la carpeta "posts" en public/storage? Solo me la crea en storage/app, y me da el error:
    InvalidArgumentException
    Cannot write to directory "public/storage/posts"
    Edit: comparto la solución por si le sirve a alguien:
    1. Ir a config > filesystems.php
    2. Donde dice : 'default' => env('FILESYSTEM_DRIVER', 'local'), cambiarlo por 'default' => env('FILESYSTEM_DRIVER', 'public'),
    3. Si no es la solución correcta/ideal, favor de avisar.

    • @giovannirojasmorales7833
      @giovannirojasmorales7833 3 года назад +2

      Creo que solo tenías que ir al archivo .env y quitar o modificar la variable FILESYSTEM_DRIVER=local por FILESYSTEM_DRIVER=public

    • @latlov
      @latlov 2 года назад

      @@giovannirojasmorales7833 ¿Sabes para qué le cambiamos el nombre de 'local' a 'public'?

  • @elbertjosesalasbrochero6318
    @elbertjosesalasbrochero6318 3 года назад

    no verificaste si guardo la imagen o no ?. no me guarda la imagen y no se si ati te funciona el codigo.

    • @latlov
      @latlov 2 года назад

      Sí las guarda. En tu listado, a manera de prueba rápida simple, agrega la columna imagen y despliega el valor de $post->image.
      Más adelante, coloca entonces la etiqueta html para mostrar la imagen.
      Intenté con {{asset($post->image)}} , pero no se muestran las imágenes en mi listado :/