Wątek przeniesiony 2015-06-29 15:17 z Webmastering przez dzek69.

Wywołanie ściągania pliku ze strony www

0

Dzień dobry,

Mam następujący problem. Muszę wywołać ściąganie pdf-u z mojego serwera. Po kliknięciu na link ma pokazać się okno dialogowe przeglądarki z prośbą o zapisanie pliku.

$path = SITEBASE."downloads/pdfs/".$ed["ebook_file"]; //ścieżka do pliku
$filename =$ed["ebook_file"]; // nazwa pliku pdf

header('Content-Transfer-Encoding: binary');  
header('Content-Length: ' . filesize($path));  // rozmiar pliku
header('Content-Encoding: none');
header('Content-Type: application/pdf'); 
header('Content-Disposition: attachment; filename=' . $filename); 
readfile($filename); 

No i po wywołaniu tego kodu plik "zapisuje" się na dysku jednak posiada 0 bajtów.

Gdzie leży błąd?

Próbowałem kilku innych skryptów i wszystkie kończą się na 0 bajtach.

0

Może dlatego, że do funkcji readfile przekazujesz nazwę pliku zamiast ścieżki do niego ;)

0

Zmieniłem kod na

$path = __FILE__."downloads/pdfs/".$ed["ebook_file"]; //ścieżka do pliku BEZWZGLĘDNA
$filename =$ed["ebook_file"]; // nazwa pliku pdf
 
header('Content-Transfer-Encoding: binary');  
header('Content-Length: ' . filesize($path));  // rozmiar pliku
header('Content-Encoding: none');
header('Content-Type: application/pdf'); 
header('Content-Disposition: attachment; filename=' . $filename); 
readfile($path); // zmiana $filename na $path jak sugerowano 

nadal nie działa!

0

wywołaj kod

 var_dump($path);

i sprawdź czy nigdzie średników nie brakuje.

0

To na pewno jest ścieżka bezwzględna do pliku? Jesteś pewien? Wyświetl to co się znajduje w tej zmiennej. Gwarantuję Ci, że to nie jest ścieżka bezwzględna :)

Budujesz zmienną $path z trzech elementów:

  • stała __FILE__
  • ścieżka do katalogu
  • nazwa pliku

Pytanie: po co używasz stałej __FILE__? Ta stała przechowuje nazwę aktualnie wykonywanego pliku php, a nie bezwzględną ścieżkę do niego :) Może chodziło Ci o stałą: __DIR__?

1 użytkowników online, w tym zalogowanych: 0, gości: 1