2010-10-14 6 views
0

OK, j'ai bien lu la section "Questions connexes" et je n'ai pas trouvé cette réponse. J'utilise une requête ajax pour force a php download. Les choses fonctionnent bien à la fin de PHP. Disons que j'ai un flux de données appelé DATA. Maintenant, je veux faire apparaître une boîte de dialogue "Enregistrer sous ...".Gestion Javascript du flux de l'octet readfile php

Le navigateur a reçu une chaîne de valeurs hexadécimales. Maintenant, que dois-je faire avec ce côté DATA du côté client (javascript)?

Voici le code PHP que j'utilise, par le lien ci-dessus:

header('Content-type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=$file'); 
readfile($file); 

J'ai essayé

  • window.open (DATA) -> flux hexagonal ne le fait pas existent (bien sûr)
  • soumettre un formulaire avec l'action DATA -> même problème

BTW, Si je fais écho le fichier de PHP, puis utilisez window.open, cela fonctionne parfois. Mais pas pour les fichiers txt ou jpgs etc.

J'ai vu cela fonctionner sur d'autres sites - comment le font-ils? Merci d'avance.

Répondre

0

est ici la réponse que je cherchais:

window.open("downloadPage.php"); 

... qui apparaît une boîte à chaque fois. Le problème avec la requête ajax était que le flux de fichier renvoyé était interprété comme XMLHttpRequestObj.reponseText.

Le navigateur interprète apparemment différemment et n'autorise pas le téléchargement.