Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] download plików
Forum PHP.pl > Forum > Gotowe rozwiązania
Scotty
Witam. Tak jak w temacie - jak można ściąnąć za pomocą skryptu umieszczonego na serwerze, plik z tego samego serwera. Chodzi mi głównie o pliki html i php.
czachor
  1. <?php
  2. header('Content-Type: application/octet-stream');
  3. header('Content-Disposition: attachment; filename=' . $filename);
  4. header('Content-Type: application/force-download');
  5. ?>
sporo tego znajdziesz na forum...
NuLL
jesli chcesz ściagnac sam, czysty kod php to Ci się nie uda.
Scotty
chodzi mi o sam skrypt ściągania plików niezależnie od formatu. i nic więcej. jakbym jeszcze mógł się dowiedzieć jak używać ten skrypt z headerami to byłbym ogromnie wdzięczny!
crash
  1. <?php
  2. $nazwa = 'plik.php';
  3.  
  4. header('Content-Type: text/plain');
  5. header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
  6.  
  7. // Dla IE:
  8. header('Content-Disposition: inline; filename = \"'.$nazwa.'\"');
  9. header('Cache-Control: must-revalidate, post-check = 0, pre-check = 0');
  10. header('Pragma: public');
  11. // Dla reszty:
  12. header('Content-Disposition: attachment; filename = \"'.$nazwa.'\"');
  13. header('Pragma: no-cache');
  14.  
  15. // treść pliku do pobrania, readfile czy co tam wolisz...
  16. ?>
Scotty
Nie wiem czy nie zostałem źle zrozumiany.
Chodzi mi o to żeby po kliknięciu na odpowiedni link pokazało się okno do ściągnięcia pliku na dysk (takie jak bym zrobił <A href="plik.exe"></A> tyle że dla plików html lub innch)
NuLL
  1. <?php
  2.  
  3. function dl_file($file){
  4.  
  5.  //Plik istnieje
  6.  if (!is_file($file)) { die(&#092;"<b>404 File not found!</b>\"); }
  7.  
  8.  //Jakieś tam info
  9.  $len = filesize($file);
  10.  $filename = basename($file);
  11.  $file_extension = strtolower(substr(strrchr($filename,&#092;".\"),1));
  12.  
  13.  //Content-Type
  14.  switch( $file_extension ) {
  15.  case &#092;"pdf\": $ctype=\"application/pdf\"; break;
  16.  case &#092;"exe\": $ctype=\"application/octet-stream\"; break;
  17.  case &#092;"zip\": $ctype=\"application/zip\"; break;
  18.  case &#092;"doc\": $ctype=\"application/msword\"; break;
  19.  case &#092;"xls\": $ctype=\"application/vnd.ms-excel\"; break;
  20.  case &#092;"ppt\": $ctype=\"application/vnd.ms-powerpoint\"; break;
  21.  case &#092;"gif\": $ctype=\"image/gif\"; break;
  22.  case &#092;"png\": $ctype=\"image/png\"; break;
  23.  case &#092;"jpeg\":
  24.  case &#092;"jpg\": $ctype=\"image/jpg\"; break;
  25.  case &#092;"mp3\": $ctype=\"audio/mpeg\"; break;
  26.  case &#092;"wav\": $ctype=\"audio/x-wav\"; break;
  27.  case &#092;"mpeg\":
  28.  case &#092;"mpg\":
  29.  case &#092;"mpe\": $ctype=\"video/mpeg\"; break;
  30.  case &#092;"mov\": $ctype=\"video/quicktime\"; break;
  31.  case &#092;"avi\": $ctype=\"video/x-msvideo\"; break;
  32.  
  33.  //Wg. mnie nie powinny być ściągane ale jak chcesz
  34.  case &#092;"php\":
  35.  case &#092;"htm\":
  36.  case &#092;"html\":
  37.  case &#092;"txt\": die(\"<b>Cannot be used for \". $file_extension .\" files!</b>\"); break;
  38.  
  39.  default: $ctype=&#092;"application/force-download\";
  40.  }
  41.  
  42.  //początek nagłówków
  43.  header(&#092;"Pragma: public\");
  44.  header(&#092;"Expires: 0\");
  45.  header(&#092;"Cache-Control: must-revalidate, post-check=0, pre-check=0\");
  46.  header(&#092;"Cache-Control: public\"); 
  47.  header(&#092;"Content-Description: File Transfer\");
  48.  
  49.  //Content znaleziony
  50.  header(&#092;"Content-Type: $ctype\");
  51.  
  52.  // I ściągamy pliczek
  53.  $header=&#092;"Content-Disposition: attachment; filename=\".$filename.\";\";
  54.  header($header );
  55.  header(&#092;"Content-Transfer-Encoding: binary\");
  56.  header(&#092;"Content-Length: \".$len);
  57.  @readfile($file);
  58.  exit;
  59. }
  60.  
  61. ?>


BTW - Webhelp wg. mnie zaczyna kandydować do miana najgorszego forum w Polsce. Czemu go nie ma to mnie za bardzo nie obchodzi. Od kiedy pojawił się ten billboard(czyt. wczoraj tongue.gif) postanowiłem stanąc 1400 kilkudziesięciu postach i odwiedzać tylko WebBazar, bez innych forów - nawet php&Bazy Danych - jestem niepotrzebny.
MoD
Ja mam ten sam problem.

  1. <?php
  2. ?>
  3.  
  4. <?php
  5.  
  6. $size = filesize( $_SESSION[&#092;"path\"].$_GET[\"file\"] );
  7.  
  8. header( 'Pragma: public' );
  9. header( 'Expires: 0' );
  10. header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
  11. header( 'Cache-Control: public ');
  12. header( 'Content-Description: File Transfer' );
  13.  
  14. header( 'Content-Type: application/force-download' );
  15.  
  16. header( 'Content-Disposition: attachment; filename=\"'.$_GET[&#092;"file\"].'\"' );
  17.  
  18. header( 'Content-Transfer-Encoding: binary' );
  19. header( 'Content-Length: '.$size );
  20.  
  21. readfile( $_SESSION[&#092;"path\"].$_GET[\"file\"] );
  22.  
  23. ?>


Plik się nie ściąga, nie wiem czemu.
goukan
Odkopie trochę ten temat.. A mianowicie mam ten kod co napisał Null i faktycznie działa. Plik się pobiera, ale jak chcę go otworzyć (.png) to windows wyświetla error: Przeglądarka fotografii systemu Windows nie może otworzyć tego obrazu, ponieważ plik jest prawdopodobnie zniszczony, uszkodzony lub jest za duży..
W czym problem?
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-2024 Invision Power Services, Inc.