Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozmiar pliku wysyłany funkcją header
Forum PHP.pl > Forum > PHP
Pilsener
Witajcie, jeśli używacie IE to przy ściąganiu jakiegoś pliku pojawia się komunikat, a w nim:
Cytat
Nazwa: xyz
Typ: Winamp media file, 2,15 MB
Od: xyz.pl
- do wysyłania plików używam takiego kodu:

  1. <?php
  2. header("Content-Type: $mime");//typ mime
  3. header("Content-Length: $wielkosc");
  4. header("Content-Disposition: attachment; filename=$nazwa");
  5. readfile($filename);
  6. ?>
- wszystkie zmienne są ok i ładnie plik się ściąga. Problem jest natomiast z rozmiarem - niezależnie od pliku w oknie pobierania zawsze pojawia się 2,69 KB. Ktoś może spotkał się z podobnym problemem i wie jak go rozwiązać?
pyro
no a skąd się bierze zmienna $wielkosc?
Pilsener
Tak jak pisałem, zmienne są ok - $wielkosc obliczam funkcją filesize i wszystko tu działa.

Edit: poradziłem sobie:
  1. <?php
  2. $plik = '03.mpg';
  3. $nazwa = 'cos_tam.mpg';
  4. header("Content-Type: application/force-download");
  5. header("Expires: ".gmdate('D, d M Y H:i:s')." GMT");
  6. //Dla IE:
  7. header("Content-Disposition: attachment; filename = $nazwa");
  8. header("Cache-Control: must-revalidate, post-check = 0, pre-check = 0");
  9. header("Pragma: public");
  10. // Dla reszty:
  11. header("Content-Disposition: attachment; filename = $nazwa");
  12. header("Pragma: no-cache");
  13. header("Content-Length:".filesize($plik));
  14. readfile($plik);
  15. exit();
  16. ?>


Edit: nie zwróciłem też uwagi, że folder z plikami jest "deny all", dlatego ścieżka ma być mniej więcej taka:
  1. <?php
  2. $_SERVER['DOCUMENT_ROOT'].'/pliki/'.$filename;
  3. ?>

Dobrze też wysyłać plik linia po linii funkcją fgets (aby nie obciążać pamięci) lub po kawałku funkcją fread:
  1. <?php
  2. $down_rate = 1024*50; //porcje po 50 kb
  3. $file = fopen($sciezka, "r");
  4.  while(!feof($file)){
  5. print fread($file,$down_rate);
  6.  }
  7. fclose($file);
  8. ?>
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.