Как лучше всего показать изображения, сохраненные в хранилище BLOB-объектов в базах данных? - PullRequest
2 голосов
/ 13 июля 2011

Конкретный пример: я сохраняю свои изображения в MySQL в столбце Blob (назовем его «изображение»). Я использую CakePHP (на самом деле не имеет значения)

Это изображение аватара пользователей. Мне нужно показать им это.

Теперь, каков наилучший способ сделать это?

В настоящее время я использую отдельное действие "show_image / {user_id}", которое считывает изображение из базы данных, устанавливает заголовки и печатает содержимое. Итак, если я хочу отобразить изображение, я просто использую:

<img src="show_image/3" />

show_image это что-то вроде:

function show_image($user_id){
    $user = //read user from database
    $image = file_get_contents($user['image']);
    header('Content-type: ' . $user['image_type']);
    header('Content-Disposition: attachment; filename="'.$user['image_name'].'"');
    echo $image;
}

Теперь, возможно, есть другие способы (возможно, base64) или что-то, что работает лучше, чем этот подход.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Хорошо, я сделал обычный способ, как говорится в вопросе.

Только что добавил кеш заголовка, на который указывает @ pst.

0 голосов
/ 13 июля 2011

Вместо сохранения изображения в виде двоичного объекта, вам, вероятно, следует просто загрузить файл в какое-то место и сохранить строку расположения в БД. Это уменьшит нагрузку на вашу БД, а также будет намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...