Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [advAJAX] download pliku, jak wywołać efekt 'zapisz jako...'
Darti
post 10.11.2007, 08:11:10
Post #1





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

Ostrzeżenie: (0%)
-----


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

Ten post edytował Darti 10.11.2007, 10:54:05


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
nevt
post 10.11.2007, 12:20:57
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Darti
post 12.11.2007, 04:06:06
Post #3





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

Ostrzeżenie: (0%)
-----


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


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
CrazyProgrammer
post 12.01.2008, 23:48:41
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 3.01.2008
Skąd: PHP Planet

Ostrzeżenie: (0%)
-----


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

Ten post edytował CrazyProgrammer 4.01.2008, 12:57:38


--------------------
INŻYNIERIA OPROGRAMOWANIA - PROGRAMOWANIE AJAX PHP SQL VB C++ C Perl d(html) Flash & Grafika

Any questions ??? contact me: crazyprogrammer (at) rocketmail ( dot) com

skype: chrisnovack
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 16:55