Intercanvi de fitxers amb Dropbox: Pujar i baixar arxius


En aquest apartat aprendrem a pujar i baixar arxius d'una carpeta de Dropbox.



Més concretament es pretén donar resposta a les preguntes següents:


  • Com pujar a Dropbox un arxiu que tinguem emmagatzemat al dispositiu mòbil?
  • Com descarregar un arxiu d'un carpeta de Dropbox?

Continuem treballant amb l'app que havíem començat a desenvolupar en l'apartat anterior i que ens permet connectar-nos a una carpeta de Dropbox i consultar-ne el contingut.

Pugem arxius a Dropbox

Per pujar arxius a la carpeta compartida ens caldrà:

  • Seleccionar arxius que tinguem emmagatzemats al nostre dispositiu mòbil.
  • Emmagatzemar un arxiu determinat a la carpeta compartida.

Programarem un botó per tal que iniciï l'objecte ActivityStarter.


que haurem configurat amb els següent paràmetres:

Aquests valors els podem configurar des de la pantalla de disseny de l'app o inicialitzar-los mitjançant l'esdeveniment when Screen.Initialize.

Un cop l'usuari hagi escollit quin arxiu vol carregar a la carpeta compartida, la resposta d’aquesta crida ens retornarà la ruta completa (path) de l’arxiu escollit al camp ActivityStarter.ResultUri. Per mostrar tan sols el nom de l'arxiu que estem pujant farem un parsing del nom complet per mostrar-lo per pantalla.

A grans trets, el parsing que hem fet ha consistit en:

  • dividir la resposta pel caracter separador “/” i generar una llista amb els elements resultants.
  • quedar-nos amb el darrer element de la llista, on hi ha el nom del fitxer.

En algunes versions d'Android el caracter separador "/" pot estar codificat. Per eliminar aquesta codificació, en cas que hi sigui, hem afegit el bloc Web1.UriDecode

En el codi anterior ens falta afegir-hi la crida a l'API que ens permetrà pujar l'arxiu a la carpeta de Dropbox. Per fer-ho utilitzarem l'API anomenada upload. Afegim els següents blocs per completar-la:

  • URL: La URL de l'API per carregar fitxers a Dropbox és la següent:

  • Request Headers: El contingut de la capçalera de la crida és el següent:

Com veiem, la capçalera conté el Token que ens ha de permetre accedir a la carpeta compartida, el nom escurçat, sense la ruta de subcarpetes, de l'arxiu que volem desar-hi i com actuar en cas de trobar que l'arxiu ja existeix.

Per tant, el codi complet que s'executarà quan l'aplicació externa ens retorni el nom complet d'un fitxer del dispositiu mòbil és el següent:

Cal fixar-se que fem una crida a l'objecte Web de tipus PostFile. Aquesta crida ens permet enviar un arxiu associat a la crida. Aquest arxiu serà justament el que voldrem accedir i del que tindrem el nom complet en el camp ActivityStarter.ResultUri

En el següent enllaç hi ha informació més detallada sobre el format en el qual s’ha de fer la crida, limitacions de mida de l’arxiu i explicació de més paràmetres per si ens ens interessa modificar la petició.


Finalment, un cop s’hagi resolt la demanda de càrrega de l’arxiu. mitjançant l’esdeveniment Web.GotText mostrarem el resultat de la petició. Si el codi de resposta és 200, voldrà dir que la petició ha estat resolta correctament.



Baixem arxius de Dropbox

Per baixar arxius de la carpeta compartida ens caldrà:

  • Seleccionar un dels arxius que tenim al ListPicker que havíem generat en l'apartat anterior.
  • Facilitar-lo a un nou objecte Web que ens permetrà demanar-lo a Dropbox.

Un cop tinguem clar quin arxiu volem descarregar de Dropbox, el tindrem seleccionat dins la propietat ListPicker.SelectedItem i farem una crida a l’objecte Web demanant servei a l'API de descàrega d'arxius anomenada download. A aquesta API li facilitarem els següents paràmetres:

  • URL: adreça URL de l'APIdownload de Dropbox.


  • Request Headers: Capçalera en la qual facilitarem a l'API el Token que ens autoritza a accedir a la carpeta compartida, la subcarpeta on es troba l'arxiu que volem descarregar (l'arrel) i el nom de l'arxiu que volem descarregar.



El codi complet mitjançant el qual duem a terme la crida és el següent:



En aquest cas la crida a l'API de descàrrega la fem amb el mètode GET mitjançant el qual indiquem que demanem un recurs.

En aquest enllaç hi ha informació més detallada sobre el format en el qual s’ha de fer la crida i explicació de més paràmetres si ens ens interessa modificar la baixada.

Un cop resolta la petició, estarem atents a la resposta mitjançant l’esdeveniment Web.GotFile i si la descàrrega ha estat correcta, mostrem el contingut de l'arxiu.

Per no fer massa extensa l'aplicació, considerem que tan sols descarreguem arxius amb imatges.

En cas que desitgeu ampliar informació sobre altres APIs de Dropbox podeu consultar-les en aquest enllaç.