Помощник
|
fread вместо картинки выдаёт бинарный код |
happyhand
|
Сообщение
#1
|
||
|
|
||
|
|||
Apay |
15.9.2011, 13:36;
Ответить: Apay
Сообщение
#2
|
|
надо послать заголовки в зависимости от формата файла, например для png:
[PHP]header( 'Content-type: image/png' );[/PHP] |
|
|
happyhand
|
Сообщение
#3
|
|
Вот так:
[PHP] $handle = @fopen($path,'rb'); $filesize = @filesize($path); $filestuff = @fread($handle, $filesize); @fclose($handle); @unlink($path); header( 'Content-type: image/png' ); echo $filestuff; [/PHP] не работает. |
|
|
r3ntg3n |
15.9.2011, 13:49;
Ответить: r3ntg3n
Сообщение
#4
|
|
А Вы уверены, что у Вас изображение формата png? Используйте определение формата изображения, а уже потом отдавайте браузеру соответствующий заголовок.
|
|
|
Apay |
15.9.2011, 14:16;
Ответить: Apay
Сообщение
#5
|
|
я же написал:
в зависимости от формата файла в общем случае код такой (переделать по необходимости) [PHP]$attr = @getimagesize( $path ); switch( @$attr[2] ){ case IMAGETYPE_GIF: header( 'Content-type: image/gif' ); break; case IMAGETYPE_PNG: header( 'Content-type: image/png' ); break; case IMAGETYPE_JPEG: header( 'Content-type: image/jpeg' ); break; default: die(); // not an image; } $handle = fopen( $path, 'r' ); fpassthru( $handle ); fclose( $handle ); [/PHP] |
|
|
ZhukV |
16.9.2011, 10:48;
Ответить: ZhukV
Сообщение
#6
|
|
Файл нужно открывать в простом режиме чтения, а не в бинарном. Точно не уверен, но мне кажеться, что там есть какая-то разница ))
|
|
|
Apay |
16.9.2011, 11:50;
Ответить: Apay
Сообщение
#7
|
|
|
|
|
Arks |
17.9.2011, 22:40;
Ответить: Arks
Сообщение
#8
|
|
Дело исключительно в заголовке.
Apay, а fpassthru( $handle ); - это жёстко :goodpost: Кстати насколько мне изместно и .jpg и .jpeg после geimagesize приобретают во втором ключе jpeg. Возможно с этим проблема? |
|
|
Apay |
17.9.2011, 23:10;
Ответить: Apay
Сообщение
#9
|
|
fpassthru( $handle ); - это жёстко есть альтернатива? загонять все в переенную потом ее выводить имхо очень нерационально.Кстати насколько мне изместно и .jpg и .jpeg после geimagesize приобретают во втором ключе jpeg .jpg и .jpeg различаются только расширением, формат файла один и тот же, поэтому если я выдам заголовок image/jpeg а файл формата jpeg назову file.non-jpeg - он все равно отобразится нормально.
|
|
|
Arks |
18.9.2011, 22:15;
Ответить: Arks
Сообщение
#10
|
|
Apay, вариантов много, в переменную в буфер.. мне кажется неправильным сразу загонять неизвестный контент в вывод. Лично я всегда произвожу обработку на imagemagick/GD заодно подгоняя размеры. По поводу jpg - да это я просто заметил, когда не знал пришлось поломать голову как восстанавливать исходное название когда расширение получается одинаковым. Это и к вопросу об imagesize. Напишите file.non-jpeg - непременно где-то что-то неправильно сработает. Например пользователь захочет сохранить и открыть файл. В общем это конечно все нюансы, я согласен. Но лучше сразу делать хорошо и правильно.
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Можно ли в старый SEO текст вместо старого домена поставить новый? | 3 | Tutich | 1209 | 22.3.2024, 14:47 автор: Tutich |
|
Кто и зачем покупает картинки обезьян по $200 тысяч? NFT |
167 | metvekot | 27407 | 6.3.2024, 21:58 автор: Boymaster |
|
Выравнивание картинки по центру между текстом | 10 | NikN | 2637 | 6.1.2021, 23:24 автор: buypushplatform |
|
Почистить код на сайте | 1 | Timka | 1104 | 2.1.2021, 1:13 автор: 0pium |
|
Вы мне код, я вам как - делать не надо. | 0 | fedornabilkin | 958 | 18.9.2020, 18:59 автор: fedornabilkin |
Текстовая версия | Сейчас: 18.4.2024, 13:58 |