Что-то не так с моим кодом? Я спрашиваю, потому что мне не удалось отобразить изображение в моем браузере. Я попытался декодировать изображение 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 + "¬e=" + value3);
}
Итак, могу ли я снова спросить, что я должен сделать для xmlhttp.setRequestHeaderPart?
Да, вы дешифровываете данные base64 в сырой двоичный файл, но сообщая браузеру, что он все еще base64. Это не сработает.
echo '<img src="data:image/png;base64,' . $row['url'] . '" />';
должно быть все, что вам нужно. никакого декодирования вообще нет. Обратите внимание: вы не могли бы выгрузить необработанный двоичный код в uri данных, даже если бы вы захотели - он будет случайным образом (и естественно) содержать "
и другие метасимволы html, представляя проблемы с htmlspecialchars()
html-инъекций". Вам нужно будет использовать htmlspecialchars()
двоичную строку, а затем выяснить, существует ли тип кодировки raw-binary-with-html-characters-escaped
url
который вы получаете, фактические данные в кодировке base64 / png, или это буквально просто URL-адрес, например,http://example.com/kittens.jpg
?