Uploader des fichiers sur Dropbox avec Node.js

13 Avril 2011

Dropbox est un service web qui permet de stocker des fichiers dans le cloud, il facilite la synchronisation des fichiers entre différents ordinateurs et même avec des smartphones. Seulement, il faut utiliser la webapp ou installer une application sur sa machine pour pouvoir manipuler les fichiers. Heureusement un petit module Node.js permet de contourner cette limitation...

Préparation et installation du module

Pour pouvoir uploader des fichiers vers les serveurs Dropbox, il faut avoir un compte Dropbox. Je passe cette étape car le procédure de création est bien expliqué sur leur site.

Une fois que vous avez un compte Dropbox, il faut installer le module node.js à votre environnement. Encore une fois c'est très simple si vous disposez de npm sur votre machine, si jamais il s'avérait que npm n'était pas installé, voici un peu de lecture pour installer node.js et npm sur votre poste. Pour installer le module Dropbox, ouvrez un terminal et saisissez la commande :

npm install dropbox

L'utilitaire npm gère les dépendances, la commande va donc également installer le module OAuth et ne devrait pas prendre plus de quelques secondes...

Obtenir une clé pour l'API

Pour pouvoir accéder à l'API de Dropbox, il faut générer un jeu de clés qui permettront de vous identifier lors de vos appels à l'API pour les comptabiliser (c'est un peu le même principe que pour Twitter).

Pour cela, il faut se rendre dans la partie Développeur du site puis cliquez sur l'onglet "My Apps" et créer une nouvelle application, bien sur il faudra avoir lu et accepté les conditions d'utilisations du service.

Une fois l'application crée, il suffit de vous rendre sur la page de description et de descendre en bas de la page pour récupérer votre jeu de clé. Gardez les bien précieusement, ils seront très utiles pour la suite...

Uploader un fichier

Maintenant, tout est prêt pour rentrer dans le vif du sujet, imaginons que nous avons un fichier zip que nous voulons uploader sur un compte Dropbox. Avec le module dropbox-node, cela va se faire tout simplement. Voici le code qui permet d'uploader le zip nommé fichiers_importants.zip sur les serveurs de Dropbox :

// On charge le code nécessaire à Dropbox
DropboxClient = require('dropbox').DropboxClient;

// On s'authentifie via l'API développeur
var dropbox = new DropboxClient("votreKeyConsummer","votreKeySecret");

// On s'authentifie avec son compte Dropbox
dropbox.getAccessToken("adresse@mail.com", "password", function (err, token, secret) {
  // Upload de l'archive dans le répertoire sauvegarde.
  dropbox.putFile('fichiers_importants.zip', 'sauvegarde', function (err, data) {
    if (err) return console.error(err)
  })
})

Bien entendu, il faudra remplacer quelques informations par les votres : les clés, le mail de login du compte que vous utilisez ainsi que son mot de passe. Sauvez donc ce snippet sous le nom dropbox-upload dans un répertoire ou vous avez une archive nommée fichiers_importants.zip. Ensuite pour exécuter ce petit script, il suffit de saisir la commande dans votre terminal :

node dropbox-upload

Enfin, naviguez dans votre arborescence Dropbox et vous devriez voir un dossier nommé sauvegarde à la racine qui contiendra le fichier zip que l'on vient d'uploader.

Pour aller plus loin...

Le snippet présenté ci-dessus est uniquement à but de démonstration, il est facilement améliorable avec une gestion des paramètres pour choisir quel fichier uploader, dans quel répertoire, etc. Je vous laisse vous prendre en main le plugin et développer vos propres outils...

Le module dropbox-node est encore jeune, mais il autorise la création de petit services assez sympa qui pourront intéresser le plus grand nombre. En effet, il est possible de déplacer, renommer, supprimer, télécharger un fichier. Pour faire simple toutes les méthodes de l'API de Dropbox sont gérées par le module.

Il pourrait donc être fort intéressant de créer un ensemble de petits scripts qui prendraient des arguments pour devenir des petits utilitaires Unix.

Conclusion

Ce petit utilitaire est vraiment sympathique pour éditer facilement vos fichiers sur Dropbox, nul besoin d'avoir son dossier Dropbox synchronisé en entier sur son poste. Cependant, avant de devenir trop dépendant de cette solution, il faut se méfier car le module n'est pas reconnu par Dropbox et les conditions d'utilisations que l'on a accepté lors de la création de l'application peuvent changer.

Page github : Dropbox-node

Charger les commentaires…