2012-11-28 2 views
1

J'essaie de faire de ma fonction de téléchargement popup avec le fichier à télécharger, il est sortie le binaire du fichier à la div quand je clique sur le lien, comment puis-je faire pour que lorsque Je clique sur le lien, il va plutôt me demander de le télécharger? Je sais que je peux le faire avec querystring et en utilisant les en-têtes en PHP, mais puis-je le faire avec ajax/javascript d'une manière similaire? merci, voici ce que j'ai essayé:Comment télécharger le fichier de javascript

<html> 
<head> 
<script> 
function Download(plan_name) 
{ 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      var resp = xmlhttp.responseText; 
      document.getElementById("txtHint").innerHTML=resp; 


      //HOW TO SHOW test.zip in a save-as dialog? 
     } 
    } 

    xmlhttp.open("GET","fetcher.php?file=/raid0/data/naswebsite/Projects/Projects/07-003_Dawson_Mine/Flight\ Plans/Dawson_Sth_1211_AMG_700.zip"); 
    xmlhttp.send(); 
} 

</script> 
</head> 
<body> 

<a href="#" onClick="Download();">Test Download</a> 
<div id="txtHint"></div> 

</body> 
</html> 

Répondre

2

Il n'est pas possible de télécharger un fichier à partir d'une requête AJAX. A la place, vous pouvez charger l'URL dans un caché.

+1

Ou faire ce que la plupart des gens font et ouvrir une nouvelle fenêtre avec 'window.open' et définir son URL cible, et avoir la réponse utiliser l'en-tête' Content-Disposition: attachment; filename = whatever' et/ou 'Content-Type: application/force-download' – Ian

Questions connexes