Rest Client et téléchargement de fichier

Si vous utilisez la gem Rest Client vue dans plusieurs précédents articles ou même sans cette gem si vous faites des requêtes via Net:HTTP par exemple, sur un projet Ruby, que vous souhaitez télécharger un fichier en streaming depuis une url et que vous rencontrez cette erreur : « \x8E » from ASCII-8BIT to UTF-8, il y a une astuce assez simple.

Le fichier téléchargé est en binaire il faut donc indiquer à l’objet File que nous souhaitons écrire du binaire comment faire ? Comme vu dans l’article sur les zip :

     File.open(CHEMIN_DU_FICHIER_A_ECRIRE, 'w') { |file|
        response = RestClient.get URI.encode("URL_DU_FICHIER_A_TELECHARGER") do |str|
        # On passe en mode de fichier binaire
        file.binmode
        # On écrit le contenu téléchargé dans le fichier
        file.write(str)
      end
    }

C’est le file.binmode qui permet à l’objet File de comprendre que l’écriture se fera en binaire.

Et voilà

Enjoy 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.