Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advAJAX] download pliku
Forum PHP.pl > Forum > XML, AJAX > AJAX
Darti
Witam

Jak zmusić ajax do wysłania pliku do użytkownika ? Chodzi mi o efekt podobny do tego z PHP za pomocą header().
Próbowałem już różnych metod, np takie coś (sorry za tag PHP ale ładnie składnie koloruje):
  1. <?php
  2. // funkcja finalnie ma zwracać plik pdf, ale jak zadziala chociaz z tekstem to i z
     pdf'em musi ;)
  3. function ReportAsPdf(){
  4. advAJAX.get({
  5. url: "index.php?action=getpdf",
  6. parameters : {
  7. // trzy dynamiczne tablice, ktore finalnie maja byc całkiem spore, 
  8. // dlatego AJAX i metoda POST
  9. "unfoldedItems" : unfoldedItems.join(','),  
  10. "allItems" : allItems.join(','),
  11. "allRowItems" : allRowItems.join(',')
  12. },
  13.  headers : {
  14. "Content-Disposition" : "attachment; filename=plik.txt",
  15. "Content-Type" : "application/x-unknown"
  16. },
  17. uniqueParameter: "custom_unique_param",
  18. onSuccess : function(obj) {
  19. document.open();
  20. document.write(obj.responseText);
  21. document.close();
  22. },
  23. onError : function(obj) { alert("Error: " + obj.status); }
  24. });
  25. }
  26. ?>

ale zamiast próby pobrania zawartości to wpisuje mi ją do przeglądarki. Ustawiałem również nagłówki w pliku php i jak wywołam ten plik php osobno to pojawia się "zapisz jako" a w w/w sposób nie chce ...

Proszę pomóżcie
nevt
przecież sam zapisujesz to co przysyła serwer do struktury dokumentu w linijce:
Kod
document.write(obj.responseText);

a powinienieś zrobić w tym miejscu coś w rodziaju: javascript write file exmple

Powodzenia...
Darti
Cytat(nevt @ 10.11.2007, 12:20:57 ) *
a powinienieś zrobić w tym miejscu coś w rodziaju: javascript write file exmple

Powodzenia...


pod IE hula aż miło, pod FF niestety nie sciana.gif
rezygnuje tutaj z Ajaxa ... zrobię to jako zwykły formularz do nowej strony z metodą post a dane prześlę sobie za pomocą dynamicznie generowanych pól typu hidden.
albo drugie rozwiązanie - window.open tylko nie wiem jak do takiego okna przekazać dane typu POST...
albo trzecie - roboczy malusieńki iframe schowany gdzieś dla niepoznaki ...
sam nie wiem

Dzięki za pomoc smile.gif
CrazyProgrammer
mozesz spróbować napisać skrypt w php, który łaczy się z twoim serwerem przez ftp
(funkcja fsocksopen) i przesyła plik pdf do przeglądarki przez ftp,
taki mały trik i wyskoczy zapisz jako. Często stosowany do plików typu .pdf,
aby nie uruchamiały się w przeglądarce (jeśli masz zainstalowany Acrobat Reader),
tylko wyskakiwało okno Zapisz jako...


mozesz pokombinowac tez z...
Kod
header('Content-Type: application/x-unknown');
header('Content-Transfer-Encoding: binary');


lub

Kod
<?php
header('Content-Type:  application/pdf');
header('Content-Transfer-Encoding: binary');
echo file_get_contents('jakis_plik.pdf',false,$contxt);
?>


zobacz czy o takie cos chodzi zobacz
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.