[WP7] Skydrive, subiendo archivos en Windows Phone 7

Dentro de los servicios Live de Microsoft, uno de los servicios que más importancia esta tomando últimamente es Skydrive. Este servicio de almacenamiento nos ofrece entre otras cosas 7 gigas de almacenamiento online, acceso con clientes tanto online como desde Mac, Windows, Ipad, Windows Phone, edición y visualización de archivos de Office, etc.

Todo esto unido a su gratuidad hace que por lo menos nos tengamos que plantear su uso en nuestros desarrollos en el caso de necesitar almacenar documentos fuera de nuestro teléfono.

Vamos a comenzar programando la subida de un archivo, para ello creamos un nuevo proyecto Windows Phone Application. Tenemos añadir dos referencias a nuestro proyecto del SDK de Live, Microsoft.Live y Microsoft.Live.Controls.

A continuación añadimos el control SignInButton a nuestro toolbox:

 

 

Una vez lo tengamos disponible en el toolbox, podemos arrastrarlo a nuestra MainPage.xaml. Debemos añadirle en las propiedades nuestro ClientID.

 

 

También vamos a añadir un botón para realizar las subidas de archivos, podemos subir cualquier tipo de archivo pero para no complicar la demostración simplemente vamos a seleccionar una imagen de la galería de imágenes de Windows Phone para subirla posteriormente.

En el SignInButton tenemos añadir el evento SessionChanged donde controlamos si estamos validados o no, dentro de este método simplemente vamos a habilitar el botón de “Upload”, según el estado de la conexión a Skydrive.

Dentro del evento SessionChanged tenemos lo siguiente:

Es una comprobación del estado de la conexión, para habilitar o no el botón que nos permite subir las imágenes. Además guardamos el estado de la sesión, nos hará falta para subir la imagen a Skydrive.

En el botón Upload vamos a editar el evento Click, abriendo la galería de imágenes

Rellenamos ahora el evento que acabamos de declarar:

Se comprueba que la selección de la imagen se ha realizado correctamente y pasamos la imagen a un objeto Stream.

Por ultimo declaramos el evento Completed y subimos la imagen con el evento UploadAsync. Esto nos dejara la foto en la raíz de nuestro Skydrive.

Este es el aspecto del evento LiveConnectClientUploadCompleted, podríamos hacer cualquier cosa, en este caso he optado por recoger la dirección de la imagen y lanzarla en el explorador de Windows Phone.

Todo el código está disponible desde aquí.

Un saludo :)