2017-10-18 17 views
0

J'ai un service Web qui retourne un fichier pour demander le navigateur comme URL avec l'extension .json. Ex:Télécharger le fichier à partir de la réponse du serveur avec l'url en tant que fichier .json

https://somesite/rest/directories/output/_ags_SessionFile_f46fd461-b437-11e7-9dc1-005056bd201b.json

L'objectif est de naviguer simplement cette URL et appeler les « Enregistrer sous » ou simplement enregistrer le fichier dans le répertoire .json téléchargements. Cela fonctionne dans la plupart des cas, mais sur les ordinateurs qui n'ont PAS l'association de type .json à IE (dans ControlPanel -> programmes par défaut), le fichier n'est pas téléchargé ou l'utilisateur est invité avec l'option SaveAs et un nouveau La fenêtre du navigateur s'ouvre avec le contenu du fichier .json affiché dans la page. Je ne sais pas très bien comment chercher une telle chose, même cette publication peut être inadéquate, car je n'ai tout simplement jamais rencontré ce problème.

function downloadFile(results, messages) { 
 
        
 
        //set a var of the complete url address that is returned from the GP service request 
 
        var urlOfFile = results[0].value.url; 
 
        
 
        //get the div from the html of the widget 
 
        link = document.getElementById('downloadSession'); 
 

 
        link.setAttribute('href', urlOfFile); 
 
        link.click(); 
 

 
       }

<div> 
    <a id="downloadSession" href="" target="_blank"></a> 
</div> 

Répondre

1

Ajout du HTML5 download attribut à la balise <a> devrait travailler pour vous

Anchor Tag doc

télécharger HTML5

Cet attribut indique les navigateurs à télécharger une URL au lieu de naviguer à elle, l'utilisateur est invité à enregistrer comme un fichier local

Les docs noter aussi quelques précautions comme il ne fonctionnera que pour les excursionnistes URL d'origine et quelques autres donc ça vaut le coup d'être lu.

Malheureusement l'attribut download est pas pris en charge dans Internet Explorer pour le téléchargement fonctionne correctement, vous devrez ajouter Content-Type et Content-Disposition en-têtes sur la réponse du serveur

ils devraient ressembler à:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"filename.json\" 
+0

Je ne comprends pas vraiment comment mettre en œuvre le exa mple sur cette page. Toile? Merci pour votre participation! – user2309282

+0

Je suggère de remplacer '' par '' –

+0

ah, je vois. Merci essayez! – user2309282

0

tête Ajouter:

header('Content-disposition: attachment; filename=file.json'); 
header('Content-type: application/json'); 
echo $json; 
+0

Ajoutez-le où? Le code .js est contenu dans un widget qui possède son propre fichier .html dans le conteneur index.html plus grand. – user2309282