Webcity.pl


  [tutorial] Realistyc...

  Własny mechanizm ses...

  Galeria w PHP

  SimpleXML nadchodzi!

  Obsługa MySQL'a w PH...

 

 02.02.06 - [new] E-video - artykuł

 30.01.06 - [update] Artykuł o sesjach

 18.12.05 - [update] PDO - artykuł

 19.08.05 - [new+upd] Aktualizacja materia...

 26.04.05 - [update] Nowy artykuł



  Pomocy WML
[php]Sesje nie działają, ...
[actionscript 2.0] [flash...
Problem z talicami w php
[ocena] llll.pl darmowe a...
Kamera na stronie interne...
Kamera na stronie interne...
[xml] Jak wyciągnąć dane
Wizualizacja w JS - POMOC
Web Developer - stała / f...

... i wiele innych wątków na forum ›

Partnerzy
› allRSS.info - katalog zasobów RSS
› iloveflyer.org - webdesign
› webserv.pl - serverpack
› skryptoteka.pl - mnóstwo skryptów
› vel.pl - hosting
› TelePraca.net - pracuj swobodnie
› PHP Solutions - magazyn PHP
› HELION - wydawnictwo informatyczne

Ksišżka dnia

CityMag
Wpisz swój e-mail, aby zaprenumerować nasz Magazyn, który zawiera najnowsze informacje ze świata i najciekawsze teksty.
 

Szukasz czegoś?
Nasza wyszukiwarka znajdzie wszystko, czego szukasz.
 

Szukanie zawansowane


  Reklama
  Redakcja
  Hosting
  Kanał

© WebCity.pl Team
 
 
  Forum Forum
Kursy Kursy
Porady Porady
Recenzje Recenzje
Newsy Newsy
Katalog stron WWW Katalog
Skrypty PHP Skrypty
Download Oferty i praca
Artykuły:
 Teoria
 Praktyka
 Promocja
 Inne
 

 Webcity.pl |

Wysyłanie plików większych niż 2 MB z serwera do klienta poprzez PHP
Autor: t0mcioo
PHP podczas wysyłania plików do klienta poprzez ładowanie je funkcją readfile() obcina je do długości 2000000 bajtów i reszta pliku nie zostaje wysłana. Oto sposób jak rozwiązać ten problem (rozwiązanie znalezione na www.php.net):

function readfile_chunked($filename,$retbytes=true)
{
   $chunksize = 1*(1024*1024); // how many bytes per chunk
   $buffer = '';
   $cnt =0;
   $handle = fopen($filename, 'rb');
   if ($handle === false)
   {
      return false;
   }

   while (!feof($handle))
   {
      $buffer = fread($handle, $chunksize);
      echo $buffer;
      if ($retbytes)
      {
         $cnt += strlen($buffer);
      }
   }
   $status = fclose($handle);
   if ($retbytes && $status)
   {
      return $cnt; // return num. bytes delivered like readfile() does.
   }
   return $status;
}


Następnie w naszych skryptach zamiast readfile() uzywamy readfile_chunked(). Funkcja ta dzieli plik na 1Mb fragmenty i laduje je w sposób selektywny. Zasada wywoływania i działania jest identyczna jak w funkcji readfile().

Powrót