Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt Pobierania dowolnego pliku
Forum PHP.pl > Forum > Przedszkole
poczatkujaca12
Mam sobie taki skrypcik, do jakiegoś czasu działało, a teraz coś się posypało i pobiera mi ok 200b i kończy pobieranie,
Dodam ze jak bezpośrednio ściągam pliki to ściąga je dobrze [więc to nie problem plików[, ale chce zamaskować źródło, przy okazji mieć kontrole, kto kiedy i ile ściąga. [wcześniej sprawdza czy osoba ma uprawnienia do ściągania]
  1. if (file_exists(''.$plikb."/".$_GET['plik'].'')){
  2. $filename = $_GET['plik'];
  3. // required for IE, otherwise Content-disposition is ignored
  4. if(ini_get('zlib.output_compression'))
  5. ini_set('zlib.output_compression', 'Off');
  6. $file_extension = substr(strrchr($filename,"."),1);
  7. switch( $file_extension ){
  8. case "pdf": $ctype="application/pdf"; break;
  9. case "exe": $ctype="application/octet-stream"; break;
  10. case "zip": $ctype="application/zip"; break;
  11. case "rar": $ctype="application/rar"; break;
  12. case "docx":
  13. case "doc": $ctype="application/msword"; break;
  14. case "xlsx":
  15. case "xls": $ctype="application/vnd.ms-excel"; break;
  16. case "pptx":
  17. case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  18. case "gif": $ctype="image/gif"; break;
  19. case "png": $ctype="image/png"; break;
  20. case "jpeg":
  21. case "jpg": $ctype="image/jpg"; break;
  22. case "mp3": $ctype="audio/mpeg"; break;
  23. case "wav": $ctype="audio/x-wav"; break;
  24. case "mpeg":
  25. case "mpg":
  26. case "mpe": $ctype="video/mpeg"; break;
  27. case "mov": $ctype="video/quicktime"; break;
  28. case "avi": $ctype="video/x-msvideo"; break;
  29. default: $ctype="application/force-download"; break;
  30. }
  31. header("Pragma: public"); // required
  32. header("Expires: 0");
  33. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  34. header("Cache-Control: private",false); // required for certain browsers
  35. header("Content-Type: ".$ctype."");
  36. header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
  37. header("Content-Transfer-Encoding: binary");
  38. header("Content-Length: ".filesize($filename)."");
  39. readfile("".$filename."");
  40. exit();
  41. }
  42. ?>


błędów, errorów, warningów, żadnych mi nie wyrzuca [mam włączone wyświetlanie]
wNogachSpisz
O rany, o rany, o rany o ranyyyy.....

Jest PEAR, pisany przez najlepszych programistów php na świecie (w dużej części przez developerów php),
Zamiast czerpać zeń pełnymi garściami, to nie, wolą wydłubywać jakieś rzeźby...

Użyj:
http://pear.php.net/package/HTTP_Download
a dla typów mime:
http://pear.php.net/package/MIME_Type

Lepsze rozwiązanie nie istnieje.

P.S
Przydatny może okazać się ten mały haczyk dla .htaccess, niektóre konfiguracje serwerów www wymuszają kompresje gzip i niczym tego nie wyłączysz za wyjątkiem .htaccess.
A jeśli nie wyłączysz, to content-length nie działa.
Kod
<IfModule mod_env.c>

SetEnv no-gzip dont-vary

</IfModule>
poczatkujaca12
dzieki, z wyłączeniem cos nie działa, a z tym pear nie mam dostepu do konsoli, jak to wykorzystać?
wNogachSpisz
Pobrać, rozpakować, includnąć i korzystać.
poczatkujaca12
ok, będę miała chwilkę to się tym pobawię, bo wygląda ciekawie smile.gif
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.