Fread показывает двоичные данные не фактическое изображение - PullRequest
0 голосов
/ 08 октября 2011

По сути, я выполняю обработку файла, и он выгружает необработанные данные в моем браузере, а не показывает фактическое изображение.

Поискив вокруг, кажется, мне нужно добавить значения заголовков, прежде чем я вызову функцию. Я пробовал это, но все же данные отображаются на экране, а не показывают фактическое изображение.

В прошлом я использовал функцию readfile_chunked, чтобы помочь отображать видео в видеоплеере, поэтому я надеялся снова использовать эту функцию для отображения других типов файлов (изображений, текста и т. Д.). Вот функция readfile_chunked.

function readfile_chunked($filename,$retbytes=true) {
   $chunksize = 1*(1024*1024); // how many bytes per chunk
   $buffer = '';
   $cnt =0;
   // $handle = fopen($filename, 'rb');
   $handle = fopen($filename, 'rb');
   if ($handle === false) {
       return false;
   }
   while (!feof($handle)) {
       $buffer = fread($handle, $chunksize);
       echo $buffer;
       ob_flush();
       flush();
       if ($retbytes) {
           $cnt += strlen($buffer);
       }
   }
       $status = fclose($handle);
   if ($retbytes && $status) {
       return $cnt; // return num. bytes delivered like readfile() does.
   }
   return $status;

}

Это то, что я делаю ... делаю заголовки, затем вызываю функцию ....

header("Content-type: $type");
header("Content-Length: $size");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: inline; filename=$uri");
header("Pragma: no-cache");
header("Expires: 0");


readfile_chunked($filename);

Я попытался изменить расположение содержимого на встроенное или вложение, но оно не отображается встроенным и не загружается для вложения.

...