Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
En este post vamos a ver cómo descargar un archivo en segundo plano usando JavaScript del lado del cliente y la función fetch para hacer peticiones HTTP.
Veremos cómo descargar un archivo como blob usando AJAX para después preguntar al usuario en dónde guardarlo, sugiriendo un nombre.
Lo bueno de esto es que podemos enviar parámetros para solicitar la descarga del archivo (por ejemplo, si el mismo estuviera protegido por contraseña o autentificación).
En este post de programación cliente-servidor vamos a ver cómo enviar un archivo desde JavaScript del lado del cliente a Golang (Go) del lado del servidor.
Específicamente hablando veremos cómo enviar un archivo usando fetch y FormData a través de AJAX hacia un servidor de Go.
Lo que te enseñaré servirá para enviar fotos, archivos binarios o incluso una foto tomada con la cámara web con las debidos ajustes.
Va a ser un ejemplo realmente simple pero que luego podrás modificar para, por ejemplo, usarlo en React, Angular, JavaScript puro o Vue.
Recientemente (al momento de escribir este post) Chrome se ha actualizado para ser más seguro, y en ocasiones nos va a lanzar el error que dice:
Access to fetch at ‘dominio’ from origin ‘otro_dominio’ has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space local.
Es un error de CORS pero no de los errores que conocemos. Este es nuevo, y dice:
The request client is not a secure context and the resource is in more-private address space local.
Así que en este post te mostraré de qué va ese error y por qué me interesa.
En el post de hoy te mostraré una cosa sencilla pero muy útil: cómo enviar un canvas de HTML a PHP usando JavaScript, para guardar ese canvas como imagen.
Cuando digo que es útil es porque yo creo que canvas nos da varias posibilidades de trabajar con imágenes o con el canvas en sí, y gracias a lo que te mostraré podrás guardar el resultado en el servidor para cualquier cosa.
Se me ocurre que por ejemplo podrías tomar una foto de una credencial de identificación, recortarla y después guardarla con PHP.
Hoy te mostraré un plugin que he desarrollado para abrir el cajón conectado a una impresora térmica desde JavaScript. El plugin tiene ese único propósito: abrir el cajón de dinero desde JS.
Para lograr esto lo que se hace es crear un servidor web que escuche peticiones hechas desde JavaScript y mandar la orden a la impresora (proporcionada por el cliente) para que el cajón de dinero sea abierto.
Así que lo único que tenemos que hacer es una petición de JavaScript al servidor de este plugin y enviarle el nombre de la impresora.
En este blog te he enseñado cómo subir uno o varios archivos con HTML y PHP puro, así como subir un archivo con AJAX usando FormData.
Ahora te voy a enseñar cómo subir varios archivos (ilimitados o sin una longitud fija) usando JavaScript, AJAX, FormData y PHP.
En este post te mostraré un ejemplo completo de CRUD que hace las operaciones fundamentales de la base de datos usando MySQL y PHP, pero además las llamadas se hacen con AJAX desde JavaScript.
Al final te dejaré el código completo que podrás descargar, probar y modificar, mismo que tendrá todas las operaciones para enviar y recibir datos desde JavaScript a un servidor PHP que se conecta a MySQL.
Básicamente todo se hará del lado del cliente, no vamos a procesar formularios con PHP, solo llamadas AJAX con JSON. Así que tendremos un CRUD con PHP y AJAX.
No vamos a usar ninguna librería como React, Vue o Angular; será JavaScript puro.
En este post te mostraré cómo hacer que la sesión persista al usar la fetch API de JavaScript. Pasa que en ocasiones hacemos cosas con la sesión del lado del servidor, pero al usar fetch no se toma en cuenta la sesión.
Por ejemplo, iniciamos sesión con fetch y al querer acceder a un recurso protegido con la sesión, nos dice que no hay datos de sesión o que no estamos logueados.
Te mostraré cómo hacer que la sesión del lado del servidor (lo he probado con PHP, Go y Node.js o bueno JavaScript del lado del cliente) persista al usar fetch.