Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: header błąd po pobraniu ?
Forum PHP.pl > Forum > PHP
aleks365
witam
mam drugi ważny problem dziś
mam skrypt do pobierania pliku przez header żeby ukryć adres przed użytkownikiem i pobiera normalnie jest pokazany rozmiar pliku i pobiera go w całości ale po pobraniu jak chcę plik wypakować to wywala że archiwum uszkodzone co jest nie tak questionmark.gif

skrypt
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2.  
  3. <?php
  4.  
  5.  
  6.  
  7. function dl_file($file){
  8.  
  9. //First, see if the file exists
  10. if (!is_file($file)) { die("<b>404 File not found!</b>"); }
  11.  
  12. //Gather relevent info about file
  13. $len = filesize($file);
  14. $filename = basename($file);
  15. $file_extension = strtolower(substr(strrchr($filename,"."),1));
  16.  
  17. //This will set the Content-Type to the appropriate setting for the file
  18. switch( $file_extension ) {
  19. case "pdf": $ctype="application/pdf"; break;
  20. case "exe": $ctype="application/octet-stream"; break;
  21. case "zip": $ctype="application/zip"; break;
  22. case "x-rar": $ctype="application/x-rar"; break;
  23. case "doc": $ctype="application/msword"; break;
  24. case "xls": $ctype="application/vnd.ms-excel"; break;
  25. case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  26. case "gif": $ctype="image/gif"; break;
  27. case "png": $ctype="image/png"; break;
  28. case "jpeg":
  29. case "jpg": $ctype="image/jpg"; break;
  30. case "mp3": $ctype="audio/mpeg"; break;
  31. case "wav": $ctype="audio/x-wav"; break;
  32. case "mpeg":
  33. case "mpg":
  34. case "mpe": $ctype="video/mpeg"; break;
  35. case "mov": $ctype="video/quicktime"; break;
  36. case "avi": $ctype="video/x-msvideo"; break;
  37.  
  38. //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
  39. case "php":
  40. case "htm":
  41. case "html":
  42. case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;
  43.  
  44. default: $ctype="application/force-download";
  45. }
  46.  
  47. //Begin writing headers
  48. header("Pragma: public");
  49. header("Expires: 0");
  50. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  51. header("Cache-Control: public");
  52. header("Content-Description: File Transfer");
  53.  
  54. //Use the switch-generated Content-Type
  55. header("Content-Type: $ctype");
  56.  
  57. //Force the download
  58. $header="Content-Disposition: attachment; filename=".$filename.";";
  59. header($header );
  60. header("Content-Transfer-Encoding: binary");
  61. header("Content-Length: ".$len);
  62. @readfile($file);
  63. }
  64.  
  65.  
  66. $file = 'pliczek.rar';
  67. echo dl_file(''.$file.'');
  68.  
  69. ?>
  70.  
nospor
A od kiedy archiva zawierają takie wstawki na początku
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
?
aleks365
nie wiem ale jak to usunę też jest błąd
nospor
To otworz edytorem ten plik co w nim masz blad i zobacz co on dokladnie zawiera. Bo pewnie zawiera jeszcze innne smieci...

Smieciem jest np. pusta linia, którą też masz na początku. Przejrzyj go, to nie gryzie
aleks365
napisałem że plik pobiera normalnie!!!!!
tylko po pobraniu plik jesz uszkodzony sad.gif
nospor
....
A ja napisałem otwórz go edytorem po pobraniu i sprawdź co zawiera...exclamation.gif! Nie otwórz archiwum, a otwórz plik archiwum edytorem tak jakby to by był zwykły plik tekstowy. Czytaj ze zrozumieniem.
aleks365
ale jak mogą być śmieci jak skrypt pochodzi z manuala

zobacz sam http://lfs-driver.ugu.pl/header.php
w archiwum jest ten plik co powinien nie jest puste
i jak dekompresuję to jest plik uszkodzony ale działa czemu tak piszę
nospor
rety.... zrób poprostu to o co proszę...
aleks365
o kurczę miałeś racje działa już normalnie smile.gif
ale to co oznacza że mam nie mieć kodowania na stronie i bez polskich znaków questionmark.gif
nospor
Cytat
ale to co oznacza że mam nie mieć kodowania na stronie i bez polskich znaków
A co ma piernik do wiatraka? Pobieranie plików to pobieranie plików, a strona to strona. Jedno z drugim nie ma żadnego związku. A jeśli u ciebie ma, to masz spieprzoną aplikację.

Przecież ja ci nie każę usuwać kodowania dla strony. Ja ci mówie, że dla pobierania plików twoje meta jest zbędne.
aleks365
Cytat(nospor @ 11.05.2012, 14:21:37 ) *
A co ma piernik do wiatraka?

oba słowa mają po tyle samo liter i sylab;
mąkę na pierniki wytwarza się w młynie, a młyn jak to młyn,
zwykle posiada wiatrak;
wiatrak może się zawsze spierniczyć;
wiatrak można opierniczyć;
zarówno pierniki, jak i wiatraki mają kolor zbliżony do
brązowego;
piernik i wiatrak są słowami, a co ciekawsze – rzeczownikami;
oba wyrazy kończą się na literę k;
oba wyrazy zawierają samogłoskę i;
obydwu wyrazów nie używamy rozmawiając o seksie w
przeciwieństwie do słowa „piguła”;
ani piernika, ani wiatraka nie da się zjeść w bobsleju;
ani też połknąć w całości;
piernik do wiatraka ma przede wszystkim mąkę.
To ma piernik do wiatraka
nospor
wow, jak durne wierszyki w necie to potrafisz znaleźć, ale żeby chwilkę nad problemem pomyśleć czy też posłuchać co ci inni doradzają to już masz niesamowite problemy. Na wykonanie jednej prostej instrukcji przez Ciebie musiałem ze 3 posty napisać byś wkońcu raczył posłuchać i to wykonać.
aleks365
z opiniami do autora i zobacz.ze.dodales znak zapytania.czyli pytanie
dzieki za pomoc
nospor
Cytat
i zobacz.ze.dodales znak zapytania.czyli pytanie
Zapytaj sie swojej pani/pana od polskiego o coś takiego jak pytanie retoryczne. Jak juz to ci wyjasnią to moj post z "pytaniem" stanie sie jasniejszy smile.gif

Cytat
dzieki za pomoc
Proszę bardzo 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.