За последние 24 часа нас посетили 16540 программистов и 1679 роботов. Сейчас ищут 864 программиста ...

Ошибка при отображ. на стр-це загруженного из БД изображения

Тема в разделе "MySQL", создана пользователем shurik_shink, 11 июл 2015.

  1. shurik_shink

    shurik_shink Новичок

    С нами с:
    17 май 2015
    Сообщения:
    79
    Симпатии:
    0
    Ошибка при попытке получить из базы и отобразить изображение
    http://os7866.co.ua/scripts/get_img.php?image_id=1

    При загрузке через FireFox выдает ошибку "Изображение 'http://os7866.co.ua/scripts/get_img.php?image_id=1' не может быть загружено так как содержит ошибки.

    При загрузке через google chrome просто вместо изображения отображается маленький квадратик

    На форумах в интернете пишут что ошибка связана с тем что изображение загрузилось не поностью

    Для того что бы проверить добавил фрагмент кода по сохранению полученного изображения из БД на диск
    Код (PHP):
    1. $dst = fopen("loaded_img.JPG","w");
    2. fwrite($dst, $image["image_data"]);
    3. fclose($dst); 
    Изображение на диск сохранилось полностью и без глюков: http://os7866.co.ua/scripts/loaded_img.JPG
    То есть ошибка связано исключительно с отображением изображения
    Код (PHP):
    1. echo $image["image_data"]; 
    Подскажите кто знает, с чем связана ошибка.

    Ниже привожу скрипт по загрузке картинки
    Код (PHP):
    1. <?php
    2. require_once "../../param.php";
    3.  
    4. mysql_connect(DB_HOST, DB_USER, DB_PASSW) or 
    5. die("<p>Ошибка подключения к серверу MySQL: ".mysql_error()."</p>");
    6.   
    7. mysql_select_db(DB_NAME) or 
    8. die("<p>Ошибка подключения к базе данных: ".mysql_error()."</p>");
    9.  
    10. if (!isset($_REQUEST["image_id"])) die("<p>Ошибка: не указано image_id</p>");
    11. $image_id = $_REQUEST["image_id"];
    12.  
    13. $query = sprintf("select * from images where image_id = %d;", $image_id);
    14. $result = mysql_query($query);
    15. if (!$result) die("<p>Ошибка при выполнении запроса: ".mysql_error()."</p>");
    16. if (mysql_num_rows($result) == 0) die("<p>Отсутствует изображение с image_id = {$image_id}</p>");
    17. $image = mysql_fetch_array($result);
    18.  
    19. //-----------------------------------------
    20. $dst = fopen("loaded_img.JPG","w");
    21. fwrite($dst, $image["image_data"]);
    22. fclose($dst);
    23. //-----------------------------------------
    24.  
    25. header('Content-type: ' . $image['mime_type']);
    26. header('Content-length: ' . $image['file_size']);
    27. echo $image["image_data"];
    28. ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Re: Ошибка при отображ. на стр-це загруженного из БД изображ

    ну сравни hex что в базе и что выдаёт браузер, fiddler поможет, из базы сделай dump и тоже посмотри что там

    1. Скачай HxD http://mh-nexus.de/en/hxd/
    Посмотри на hex картинки
    2. Через PHPMyAdmin загрузи картинку в базу, сделай экспорт этих данных
    посмотри через текстовый редактор, совпадает ли hex в файле который экспортирован из базы
    3. Загрузи картинку через скрипт, экспорт данных сравнение hex
    4. Чрез fiddler посмотри что отправляет браузер в качестве картинки и совпадает ли hex
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Ошибка при отображ. на стр-це загруженного из БД изображ

    А md5 расчитать нельзя?
    2 разных файла - 2 разных хеш значений.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Re: Ошибка при отображ. на стр-це загруженного из БД изображ

    Можно и с md5 сделать, но потянет ли автор? Посмотрим.
     
  5. shurik_shink

    shurik_shink Новичок

    С нами с:
    17 май 2015
    Сообщения:
    79
    Симпатии:
    0
    Re: Ошибка при отображ. на стр-це загруженного из БД изображ

    Посмотрел hex картинки и того что возвращал скрипт. Скрипт добавлял три лишних символа в начало изображения и из-за этого при отображении последнего происходила ошибка.

    А связано это было с тем что скрипт был в кодировке UTF-8 а не UTF-8 без BOM. После того как скрипт перекодировал в UTF-8 без BOM все заработало. Теперь скрипт показывает картинку.

    Добавлено спустя 20 секунд:
    Re: Ошибка при отображ. на стр-це загруженного из БД изображения
    Всем спасибо.