Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][PHP]Pobieranie pliku
elmozaur
post
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


Witam.
Chcialem zrobic pobieranie pliku z serwera na komputer usera z pokazaniem komunikatu ze plik zostanie pobrany.

W html zrobilem klawisz, ktory wywoluje AJAXa. Ajax operuje na pliku do.php
  1. $plik_do_zapisu = 'to ma byc pobrane jako plik txt';
  2. $file = $plikName;
  3. $fp = fopen($file, "w");
  4. flock($fp, 2);
  5. fwrite($fp, $plik_do_zapisu);
  6. flock($fp, 3);
  7. fclose($fp);
  8.  
  9. flush();
  10. header('Content-Description: File Transfer');
  11. header('Content-Type: application/force-download');
  12. header('Content-type: text/plain');
  13. header("Content-Disposition: attachment; filename=".$file);
  14. header('Content-Length: ' . filesize($file));
  15.  
  16. readfile($file);


AJAX wywoluje sie prawidlowo, pierwsza czesc skryptu generuje mi plik tymczasowy na serwerze jednak sam proces pobierania nie uruchamia sie
pytanie: dlaczego i jak to poprawic ?

dziekuje i pozdrawiam
Grzegorz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Sprawdź ścieżkę do pliku, włącz raportowanie błędów w php. Spróbuj jeszcze Content-Type: application/force-download

  1. header("Pragma: public"); // required
  2. header("Expires: 0");
  3. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  4. header("Cache-Control: private",false); // required for certain browsers
  5. header("Content-Type: application/force-download");
  6. // header("Content-Disposition: attachment; filename=" . $file);
  7. header("Content-Disposition: attachment; filename=\"".basename($file)."\";" );
  8. header("Content-Transfer-Encoding: binary");
  9. header('Content-Length: ' . filesize($file));

http://php.net/manual/en/function.header.php
Na końcu sprawdź samą konsolę błędów w przeglądarce.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
elmozaur
post
Post #3





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


dzieki za zainteresowanie.

zrobilem taki test:
twoj kod zapisalem jako test.php

gdy odwoluje sie z urla do tego pliku to plik ladnie sie pobiera.
Jesli natomiast odwolam sie do niego poprzez jQuery/AJAX to juz nie

[JAVASCRIPT] pobierz, plaintext
  1. unction downloadFile(){
  2.  
  3. jQuery.ajax({url: "test.php",
  4. data :"rand=" + Math.random() + "&file=backup",
  5. type: "GET",
  6. async :false,
  7. cache :false,
  8. dataType :"html",
  9. success : function(obj) {
  10. alert('pobrany');
  11. }
  12. });
  13.  
  14. }
[JAVASCRIPT] pobierz, plaintext


firebug ani konsola nie pokazuja bledow wszystkie statusy sa na 200.
Zrobilem jeszcze tak zze poprzez Javascript otwieram nowe okno z kodem test.php i wtedy pliki sie pobieraja, jesli jednak ktos ma zablokowane wyskakujace okna to lipa...


co moze byc jeszcze przyczyna klopotu questionmark.gif?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Hmm. Spróbuj kolejno: POST i async :true


--------------------
Nie pomagam na pw, tylko forum.
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 Aktualny czas: 20.08.2025 - 10:39