Показать сообщение отдельно
  #14 (permalink)  
Старый 07.05.2015, 19:24
Sn9 Sn9 вне форума
Интересующийся
Отправить личное сообщение для Sn9 Посмотреть профиль Найти все сообщения от Sn9
 
Регистрация: 07.05.2015
Сообщений: 20

Сообщение от laimas Посмотреть сообщение
header("Content-type: image/*"); - это не заголовок для изображения. При передаче такого заголовка браузер будет предлагать скачать неизвестный тип. Не зная истинного типа изображения, можно указывать тип как image/jpg.

Но у вас Ajax запрос, а не запрос браузера на получение изображения, и нужно получить бинарные данные, и таким образом как это вы делаете не получится. Это более сложный процесс. Но можно поступить проще - возвращать клиенту не $image['im'], base64_encode($image['im']), а на клиенте присваивать это значение src изображения, например:
$('<img src="data:image/jpg;base64,'+im+'" >').appendTo('body');

где im, это и есть возвращенное сервером изображение кодированное в base64.

Но если получать таким образом содержимое изображений, то в
<img src="run.php?id=2" alt="" width="200px"/><br>
на странице логики нет. Как и нет логики держать при таком запросе изображения в базе, перекладывая на плечи SQL работу, которую бы браузер выполнил сам.
Если BLOB данные изображений большие, то base64 это будет почти в три раза больший объем. Может стоит задуматься над тем, если ли необходимость грузить изображения в базу, так ли это критично в вашем случае?
Спасибо за такой обширный ответ
Подскажите тогда как реализовать если, к примеру, изображения будут храниться на сервере? Ведь опять же нужно будет использовать src, который ajax`ом не будет нормально обновлять?
Ответить с цитированием