IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récupérer un fichier sur un service RestFull


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut Récupérer un fichier sur un service RestFull
    Bonjour,
    je vais essayer d'être clair pour vous exposer mon problème :p

    J'écris du code javascript et j'utilise une API sur laquelle je n'ai pas la main.
    Cette API nécessite d'être authentifier via un header Authorization dans la requête http. Je n'ai aucun problème à récupérer les informations au format json.
    Mon problème apparaît quand cette API me retourne un fichier binaire que j'aimerais pouvoir télécharger depuis le navigateur.
    Je récupère bien le fichier coté javascript (avec un appel xhr) mais je ne sais pas quoi en faire. D’après mes recherches je peux d'ailleurs plus en faire grand chose.
    Si j'utilise un href='www.api.whatever.com/file/get/12' je n'ai pas le sentiment de pouvoir transmettre l'authentification.

    Des idées ?

    Merci de m'avoir lu

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Si si, c'est possible de traiter du binaire avec Ajax : https://developer.mozilla.org/en-US/...ng_Binary_Data

    C'est en anglais mais je peux te faire un semblant de traduction si tu le demandes
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut
    C'est très bien en anglais, merci. Je teste au plus vite

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut
    Alors l'API ne fonctionne pas pour le moment, et pour simplifier le problème au maximum, j'ai placé un fichier pdf sur mon Apache.

    Voila mon cas de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $scope.getFile = function(id){
      $http({
        method: 'GET',
        url:'/test.pdf',
        responseType:'blob'
    }).success(function(data,status,headers,config){
      var blob=new Blob([data],{type:'application/pdf'});
      var url=URL.createObjectURL(blob);
      $('#test').href=url;
    }
    }
    C'est de l'AngularJS, mais cela ne devrait pas être un problème. Il m'est impossible d'ouvrir le fichier ainsi créé.

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Si j'ai bien compris, ton bout de code appelle le fichier, le convertit en une URI data: (createObjectURL) et attache cette URI à un lien, c'est bien ça ? Qu'est-ce qui ne marche pas ?

    Est-tu sûr que ton navigateur de test supporte le type 'blob' ? As-tu essayé la méthode du charset 'x-user-defined' ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Par défaut
    Alors mon navigateur est chrome 29. Je pense qu'il gére ca. Je n'ai pas d'erreur JS.
    Ce qui ne marche pas, c'est quand je clique sur le lien que j'ai ainsi généré :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="blob:http%3A//localhost/4ce88f5e-4634-4860-93cc-7771a3048e0c" id="test">Test</a>
    Chrome est incapable d'ouvrir le fichier pdf.

    As-tu essayé la méthode du charset 'x-user-defined' ?
    Je vais chercher des infos, et tester ça.

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2008, 11h05
  2. Récupérer un fichier sur un serveur HTTP
    Par Medivh dans le forum WinDev
    Réponses: 2
    Dernier message: 01/04/2007, 22h28
  3. récupérer un fichier sur un serveur distant
    Par Phiss dans le forum ASP
    Réponses: 7
    Dernier message: 17/05/2006, 18h02
  4. récupérer un fichier sur Intranet
    Par nbelg27 dans le forum Access
    Réponses: 5
    Dernier message: 10/11/2005, 13h58
  5. [WebLogic] Récupérer un fichier sur le serveur...
    Par T.NightGlow dans le forum Weblogic
    Réponses: 1
    Dernier message: 29/06/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo