2011-03-31 1 views
0

У меня было это работает на kohana 2, но в kohana 3 это не так.Kohana 3, показать изображение, хранящееся в базе данных

Служить изображение хранится в виде BLOB в базе данных, я сделал следующее:

1- контроллер, к которому я прошу, какой образ вы хотите. Я подключаюсь к базе данных, используя, конечно, модель, и обслуживаю изображение с помощью представления.

$prod = ORM::factory('product',$idx); 
$img = new View('image'); 
$img->pic = $prod->getImage(); 

2-Модель имеет небольшой трюк, чтобы получить эту работу:

public function getImage() 
    { 
    return imagecreatefromstring($this->image); 
    } 

изображение является столбец BLOB, где хранить картины я хочу служить.

3- В представлении: я установить заголовок типа содержимого, а затем служить изображение

header('content-type: image/png; charset=UTF-8'); 
imagepng($pic); 

Это работал в Кохана 2, но в KO3 это не делает,

I» m пытается использовать $ response-> send_file(), но я теряюсь

+1

показать код контроллера пожалуйста (с '$ response-> send_file()' и т.д.) – biakaveron

ответ

0

Во-первых, вы никогда не должны отправлять заголовки с заголовком(), если вы не взламываете fw. Ko3.1 прекрасно отделяет запрос от ответа, а последний отвечает за заголовки ответов/все остальное (оба они написаны в значительной степени после RFC 2616).

Во-вторых, в этом случае нет необходимости в файле вида, Response :: $ _ body - это то, что возвращает текущий объект ответа.

Ответ :: send_file() возвращает ответ как загрузку, я полагаю, это не то, что вы пытаетесь выполнить?

Итак, вам нужно что-то вроде этого (изменить для собственных нужд):

public function action_image($id) 
{ 
    $image = ORM::factory('product', $id); 

    if (! $image->loaded()) // ... 404 ? 

    $this->response 
     ->headers('Content-Type','image/png') 
     ->body($image->image) 
     ->check_cache(NULL, $this->request); // 304 ? 
} 
+0

КСТАТИ. Я бы рекомендовал вам использовать собственные функции базы данных для этого, а также сохранить etag в db менее поздних служебных данных (передав их позже как первый параметр для check-cache) – Kemo

+0

все прошло отлично !, спасибо! Мне пришлось возвращать данные из базы данных, как есть, imagecreatefromstring сломал изображение ... на самом деле не знаю, почему (я имею в виду, он работал в KO2). Я спешил с этим, так что, спасибо вам снова! – fermar

 Смежные вопросы

  • Нет связанных вопросов^_^