Показать изображение base64 из базы данных

1

Что-то не так с моим кодом? Я спрашиваю, потому что мне не удалось отобразить изображение в моем браузере. Я попытался декодировать изображение base64 в png, но я все еще не могу отобразить изображение. Мой формат URL, как показано ниже: data: image/jpeg; base64, iVBORw0kGgoAAAANSUhgAAAeAA...

Мой php-код


    //Connect to database
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("studioassessor_01") or die (mysql_error());

    $sql = "SELECT * FROM frame";
    $result = mysql_query($sql);

    if($result == FALSE){
       die(mysql_error());
    }

    while($row = mysql_fetch_array($result)){

        header("Content-type: image/png");
        echo '<img src="data:image/png;base64,' . base64_decode($row['url']) . '" />';

   }

После того, как у меня есть тест для многих раундов, я обнаружил, что что-то не так для моей части заголовка запроса в скриптах ajax. Заголовок запроса изменил значение моей базовой строки 64 на другое значение.

            function saveIt(){

                var xmlhttp = new XMLHttpRequest();

                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                        alert("Save successfully!");
                    }
                }

                var value1 = document.getElementById("url").value ;
                var value2 = document.getElementById("time").value;
                var value3 = document.getElementById("note").value;

                xmlhttp.open("POST", "insertFrame.php", true);
                xmlhttp.setRequestHeader("Content-type:image/png","application/x-www-form-urlencoded");
                xmlhttp.send("url="+ value1 + "&time=" + value2 + "&note=" + value3);

            }

Итак, могу ли я снова спросить, что я должен сделать для xmlhttp.setRequestHeaderPart?

Теги:
base64

1 ответ

1

Да, вы дешифровываете данные base64 в сырой двоичный файл, но сообщая браузеру, что он все еще base64. Это не сработает.

echo '<img src="data:image/png;base64,' . $row['url'] . '" />';

должно быть все, что вам нужно. никакого декодирования вообще нет. Обратите внимание: вы не могли бы выгрузить необработанный двоичный код в uri данных, даже если бы вы захотели - он будет случайным образом (и естественно) содержать " и другие метасимволы html, представляя проблемы с htmlspecialchars() html-инъекций". Вам нужно будет использовать htmlspecialchars() двоичную строку, а затем выяснить, существует ли тип кодировки raw-binary-with-html-characters-escaped

  • 0
    Привет, я пытался использовать ваш метод, но все еще не может отобразить изображение. Что-то не так с моими данными URI? Спасибо.
  • 0
    хорошо, содержит ли url который вы получаете, фактические данные в кодировке base64 / png, или это буквально просто URL-адрес, например, http://example.com/kittens.jpg ?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню