Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]Pobieranie pliku
Forum PHP.pl > Forum > Przedszkole
elmozaur
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
darko
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.
elmozaur
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?
darko
Hmm. Spróbuj kolejno: POST i async :true
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.