Subir archivos a un servidor desde android

Subir archivos a un servidor desde android

Subir archivos a un servidor desde android
5 (100%) 2 votos

Hoy vamos a ver como subir archivos a un servidor desde android mediante la libraria android upload service de una forma tan fácil y rápida que nos evitaremos mas de 1 dolor de cabeza que si lo hacemos manualmente o mediante algún otro metodo, analizamos como importar la libreria, ejemplo de uso en codigo y algunos consejos en la subida de archivos a un servidor.

¿Cómo subir una imagen al servidor?

Mi situación

Recientemente me encontraba desarrollando una aplicacion móvil en android para uno de mis clientes donde era necesario estar constantemente subiendo imagenes al servidor, estas imagenes además de ser en gran cantidad debian tener la mejor resolución.

Mi primera solución para subir archivos al servidor (y no la mejor)

Lo primero que se me paso por la cabeza, que es lo primero que suelo hacer, fue convertir estas imagenes a una cadena de texto base64 y enviarlas por peticion post a un archivo php en el servidor que las convertia de nuevo a imagen  y las guardaba en el servidor mediante la funcion php file_put_contents, este metodo tenia los siguientes problemas:

  • Era un proceso pesado ya que debia convertir y desconvertir la imagen, algunos errores out of memory presentes.
  • Era un proceso lento ya que era requerimiento de la aplicación tener la máxima calidad en las imagenes.
  • Las imagenes muchas veces caían en el limite de envío en peticiones post por las enormes cadenas de texto base64 que se generaban.
  • y algunos otros más.

Mi segunda y mejor solución para subir las imagenes al servidor

Posteriormente, despues de estar investigando un poco en Internet y sabiendo que tenía que cambiar la forma de subir estas imágenes, encontre una librería bastante útil y que entrará definitivamente entre mis herramientas en desarrollo de apps para android: android upload service.


Suscríbete!

Suscríbete a nuestra lista de correo y recíbe los últimos contenidos directamente en tu bandeja de correo electrónico, puedes elegir únicamente de que categoria del blog quieres recibir contenido.

Suscríbeme

La librería android upload service de gotev

La librería android upload service es bastante útil y fácil de utilizar en nuestros proyectos.

Su principal función como te podrás imaginar es la de subir archivos a un servidor, binarios o multipart, en este caso serían imagenes, pero también tiene una función bastante interesante para enviar notificaciones al terminar de subir cada archivo al servidor (aunque en mi caso no era necesaria utilizarla) y puedes implementar los eventos relacionados a estas subidas para detectar por ejemplo cuando un archivo termino de subirse con éxito, con error, fue cancelado o incluso el progreso de la subida.

Instalación de la libreria para subir archivos en android studio

Para integrar esta librería a nuestros proyectos en Android Studio basta con agregarla a nuestro Gradle (de la app) como dependencia con la siguiente linea:

Revisar la version actual al momento de leer esta entrada.

Para nuestro código de ejempo de como subir archivos a un servidor desde android necesitaremos importar lo siguiente:

Ahora lo único que nos hace falta es ver el código del ejemplo para subir los archivos o en este caso las imagenes al servidor.

Código de ejemplo para subir archivos a un servidor desde android

En este punto ya deberemos tener lo siguiente:

  • Ruta de nuestro archivo, en este caso imagen, en el dispositivo.
  • Url de un archivo php que recibira nuestro archivo (y cualquier otro dato) en el servidor.

En mi caso en la variable rutaFotoCamaraGaleria guardo la ruta en el dispositivo de la imagen a subir al servidor y en la variable URL_SUBIRPICTURE almaceno la url en mi servidor a donde se enviara la imagen, es un documento php que veremos más adelante.

El codigo que envia la imagen (o archivo) a la ruta del php en el servidor es el siguiente:

En la linea .addFileToUpload agregamos la ruta del archivo a subir asi como su clave para recibirlo en nuestro php, en este caso ‘picture’, tambien en la linea .addParameter agregamos otro parametro llamado ‘filename’ que en este caso es el nombre del archivo, como he mencionado estos serán recibidos por un archivo php en el servidor.

Cabe mencionar que sobreescribimos el metodo onCompleted para saber cuando el archivo fue subido al servidor, en mi caso la url de la imagen que subo es una ruta temporal de un archivo que he creado por lo que me interesa que al subirla ésta sea eliminada del dispositivo.

Tambien indicar que si queremos la funcionalidad de notificacion al terminar de subir el archivo entonces deberemos agregar la linea:

El resultado de esta linea sería algo como esto:

Subir archivos a un servidor desde android notificacion

Por último y no menos importante es ver el codigo php que recibe el archivo, y en mi caso el nombre de la imagen:

Como puedes ver unicamente baja el archivo al servidor con el nombre de archivo enviado mediante la función move_uploaded_file.

Puedes testear tu archivo php con herramientas como la extensión postman sin tener que hacer las subidas con tu móvil.

Si tienes alguna duda o comentario respecto a como subir archivos a un servidor desde android no dudes en dejarme un comentario y con gusto te apoyaré si esta en mis posibilidades.

Saludos!

 

Subir archivos a un servidor desde android
5 (100%) 2 votos

10
Dejar un comentario

avatar
7 Comment threads
3 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
7 Comment authors
PamelaGonzalo FuentesLuisBoris CabreraJonathan Melgoza Recent comment authors
  Subscribe  
Notify of
Pamela
Guest
Pamela

Al subir la imagen y buscarla en mi servidor, veo que la imagen no sube completa, uso el mismo codigo que tienes en este ejemplo.
Cuando lo testeo en el simulador de android funciona perfectamente, pero al testear en un telefono real sube la imagen incompleta.
Puedes darme una idea que cual puede ser el problema por favor.

Gonzalo Fuentes
Guest
Gonzalo Fuentes

Hola amigo, muy buen tutorial… mi pregunta es, ¿que pasaría si lo que tuvieses que subir fuera un audio?… como sería en ese casi… gracias por la respuesta.

Luis
Guest
Luis

hola, estimado podrias poner un ejemplo hay bastante variables que no puedo identificar, y me comentaron que la libreria es muy buena.

Boris Cabrera
Guest
Boris Cabrera

Gracias por el aporte !!!!!!!!!!!!

Juan
Guest
Juan

Tendras codigo de ejemplo la vdd no entendi asi

Esteban moine
Guest
Esteban moine

Creo que el error lo tengo en esta linea:
define(‘UPLOAD_DIR’, ‘ruta/subir/archivo/’);
por ejemplo si yo quiero guardar en:
midominio.com/imagenes
seria asi?:
define(‘UPLOAD_DIR’, ‘/imagenes’);
gracias por responder! 🙂

Esteban moine
Guest
Esteban moine

Hola, como estas? tengo un problema, en la app me dice que la imagen se subió exitosamente, pero no la puedo encontrar en el servidor, por que puede ser?
gracias por el tutorial!