Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dlaczego skrypt nie kończy się wyskakującym okienkiem
Forum PHP.pl > Forum > Przedszkole
finito
No właśnie. Usiłuję napisać skrypt php, który pozwoli na ściąganie plików z serwera na dysk. Niby wszystko działa, ale po kliknięciu na link, okienko zapisywania się nie wyskakuje.

Może ma ktoś pomysł dlaczego?
index.php:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <title>Nawigacja po katalogach</title>
  6. </head>
  7. <body>
  8. <div>
  9. <?php
  10. $downloadpath="./download/";
  11. function wypisz($downloadpath)
  12. {
  13. $fd = opendir($downloadpath);
  14. if (!$fd) return false;
  15. while (( $file = readdir($fd))!==false)
  16. {
  17. if (is_dir($downloadpath.$file)) continue;
  18. echo "<a href=\"http://www.php.bartoszszmit.cba.pl/download.php?name=";
  19. echo "$file\">$file</a><br>";
  20. }
  21. closedir($fd);
  22. }
  23. wypisz($downloadpath);
  24. ?>
  25. </div>
  26. </body>
  27. </html>

download.php
  1. <?php
  2. $downloadpath="/download/";
  3. function checkFileName($name,$downloadpath)
  4. {
  5. $fd = opendir($downloadpath);
  6. if (!fd) echo "nie udało się otworzyć katalogu";
  7. $result=false;
  8. while (($file = readdir($fd))!==false)
  9. {
  10. if (is_dir($downloadpath.$file)) continue;
  11. if ($file==$name)
  12. {
  13. $result=true; break;
  14. }
  15. }
  16. closedir($fd);
  17. return $result;
  18. }
  19. function send($file,$downloadpath)
  20. {
  21. if (!file_exists($downloadpath.$file))
  22. { echo "nie ma takiego pliku";
  23. return;
  24. }
  25. $fd = fopen($downloadpath.$file,'r');
  26. $filesize = filesize($downloadpath.$file);
  27. $contents = fread($fd,$filesize);
  28. fclose($fd);
  29. header("Content-Type:application/octet-stream");
  30. header("Content-Length:$filesize");
  31. header("Content-Disposition:attachment;file=$file");
  32. echo $contents;
  33. if (isSet($_GET['name']))
  34. {
  35. if (!checkfileName($name,$downloadpath))
  36. {
  37. echo "nie ma takiego pliku na serwerze";
  38. }
  39. else
  40. {
  41. send($_GET['name'],$downloadpath);
  42. }
  43. }
  44. else { echo "nie ma takiego pliku na serwerze";}
  45. }
  46.  
  47. ?>
com
a może byś tak wywołał te funkcje w tym download?
finito
Przez chwilę się zaśmiałem, ale to musi być coś innego. Pod koniec skryptu napisałem:
  1. send($file,$downloadpath);


i nic to nie dało. To musi chodzić o coś innego. Poza tym funkcja sprawdzająca już też jest wywołana w definicji funkcji send, więc to nie to.

****
Okej, już sobie poradziłem.

To jest post Nospora.
"1) Kontynuuj tamten temat
2) A kto ci kaze o tu
header("Content-Disposition:attachment;file=$file,filename=twojanazwapliku.txt");
nadawac nazwe na stale...... tam dawaj dynamiczną nazwe, w zaleznosci od pliku."

Sory, ale moja wiedza z php jest chyba za mało wystarczająca. W jaki sposób mogę nadać tę dynamiczną nazwę oraz gdzie?
nospor
facepalmxd.gif
Przeciez juz to robisz....o tu:
header("Content-Disposition:attachment;file=$file");
jaki wiec problem dopisac filename?

swoja drogą powinno byc
header("Content-Disposition:attachment;filename=$file");
I juz
finito
Sory, po prostu dopiero się uczę. Co prawda wolno, ale stawiam też na wytrwałość.

Jeszcze jedno: uczę się php z php.net oraz z ostatniego wydania php dla każdego Marcina Lisa. Ewentualnie wchodzę na stackoverflow, ale to już rzadziej, bo tam są bardziej zaawansowane rzeczy.

Jeśli chodzi o ciebie, to widzę, że taki trochę guru jesteś. Czy możesz polecić mi jakieś źródło wiedzy, które sprawi, że nie będę tu takich durnych pytań zadawał? Bo niestety tak czuję, że jeszcze przez jakiś czas będzie mi się to zdarzać.

nospor
Cytat
Czy możesz polecić mi jakieś źródło wiedzy, które sprawi, że nie będę tu takich durnych pytań zadawał?
Przedewszystkim analizuj co masz.
Skoro miales:
header("Content-Disposition:attachment;file=$file");
to powinienes byl wiedziec co ten kod robi i nie pytac sie jak dodac dynamiczną nazwe, bo to wlasnie juz miales. Trzeba rozumiec co się już ma, by moc isc dalej.
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.