Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z funkcja do sciagania plikow
Forum PHP.pl > Forum > Przedszkole
AIRSKY
znalazłem pewna funkcje do sciagania plikow
  1. <?
  2. function dl_file($file){  // do pobierania pliku z serwera:D
  3.  
  4.  //Plik istnieje
  5.  if (!is_file($file)) { die(&#092;"<b>404 File not found!</b>\"); }
  6.  
  7.  //Jakieś tam info
  8.  $len = filesize($file);
  9.  $filename = basename($file);
  10.  $file_extension = strtolower(substr(strrchr($filename,&#092;".\"),1));
  11.  
  12.  //Content-Type
  13.  switch( $file_extension ) {
  14.  case &#092;"pdf\": $ctype=\"application/pdf\"; break;
  15.  case &#092;"exe\": $ctype=\"application/octet-stream\"; break;
  16.  case &#092;"zip\": $ctype=\"application/zip\"; break;
  17.  case &#092;"doc\": $ctype=\"application/msword\"; break;
  18.  case &#092;"xls\": $ctype=\"application/vnd.ms-excel\"; break;
  19.  case &#092;"ppt\": $ctype=\"application/vnd.ms-powerpoint\"; break;
  20.  case &#092;"gif\": $ctype=\"image/gif\"; break;
  21.  case &#092;"png\": $ctype=\"image/png\"; break;
  22.  case &#092;"jpeg\":
  23.  case &#092;"jpg\": $ctype=\"image/jpg\"; break;
  24.  case &#092;"mp3\": $ctype=\"audio/mpeg\"; break;
  25.  case &#092;"wav\": $ctype=\"audio/x-wav\"; break;
  26.  case &#092;"mpeg\":
  27.  case &#092;"mpg\":
  28.  case &#092;"mpe\": $ctype=\"video/mpeg\"; break;
  29.  case &#092;"mov\": $ctype=\"video/quicktime\"; break;
  30.  case &#092;"avi\": $ctype=\"video/x-msvideo\"; break;
  31.  
  32.  // nie powinny być ściągane 
  33.  case &#092;"php\":
  34.  case &#092;"htm\":
  35.  case &#092;"html\":
  36.  case &#092;"txt\": die(\"Zakazane uzycie dla \". $file_extension .\" </b>\"); break;
  37.  
  38.  default: $ctype=&#092;"application/force-download\";
  39.  }
  40.  
  41.  //początek nagłówków
  42.  header(&#092;"Pragma: public\");
  43.  header(&#092;"Expires: 0\");
  44.  header(&#092;"Cache-Control: must-revalidate, post-check=0, pre-check=0\");
  45.  header(&#092;"Cache-Control: public\");
  46.  header(&#092;"Content-Description: File Transfer\");
  47.  
  48.  //Content znaleziony
  49.  header(&#092;"Content-Type: $ctype\");
  50.  
  51.  // I ściągamy plik
  52.  $header=&#092;"Content-Disposition: attachment; filename=\".$filename.\";\";
  53.  header($header );
  54.  header(&#092;"Content-Transfer-Encoding: binary\");
  55.  header(&#092;"Content-Length: \".$len);
  56.  @readfile($file);//funkcja ktora czyta plik i go wypisuje
  57.  exit;
  58. }
  59. ?>

ale zauwazyłem w jej działaniu pewna nieprawidłowosc ..
tzn . gdy siagam archiwa rar to potem nie moge ich otworzyc ..
wypisuje mi komunikat ze sa uszkodzone [ ' nieoczekiwany koniec archiwum ] i nie moge ich wypakowac ...
zastanawiam sie czy moze brakuje tu jakichs nagłówków albo czegos jeszcze .. .
bede bardzo wdzieczny za wszelka pomoc
pozdr.
dr_bonzo
http://forum.php.pl/index.php?showtopic=19593&hl=mime+types

rar => application/x-rar-compressed
AIRSKY
niestety nie w tym tkwi bład .. bo archiwa zip tez ciaga uszkodzone choc tym mime jest dobry

PS. podstawiłem tym mime jeszcze do rar ale to nic nie pomogło sad.gif


EDIT
===============
wywaliłem wiekszosc nagłówków
zostawiłem tylko :

  1. <?
  2.  
  3. header(&#092;"Content-Type: $ctype\"); 
  4. $header=&#092;"Content-Disposition: attachment; filename=\".$filename.\";\"; 
  5.  header($header );
  6.  
  7. ?>


i nareszcie działa tak jak nalezy Rkingsmiley.png
dr_bonzo
A nie wypisujesz jakichs dodatkowych danych do przegladarki? np. enter, spacja przed <?php, albo po ?>
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.