Javascript从Base64汇编图像?

时间:2017-03-25 10:51:03

标签: javascript php html

您好我有一个存储在数据库中的图像,如下所示:

     iVBORw0KGgoAAAANSUhEUgAAAVEAAACsCAYAAADCDZ8x......

它的base64。我有以下PHP代码:

<?php

include_once "mysql_connect.php";
if(isset($_GET['id'])){
$id = mysql_real_escape_string($_GET['id']);
$query = mysql_query("SELECT * FROM `entree` WHERE `realID` = '$id'");

while($row = mysql_fetch_assoc($query)){
    $imageData = $row[6];
    $imageType = $row[3];
    $imageData = base64_decode($imageData);
}

if($imageType == "image/png"){
    header("content-type: image/png");
}else if($imageType == "image/jpeg"){
    header("content-type: image/jpeg");
}else{}

if(!($imageData == null)){
echo $imageData;
}else{
    echo $imageData;

}


}else{

}



?>

这是HTML / PHP:

$SRC ="generateThumbnail64.php?id=$realid"; 

echo "<div id = \"feature0\" align=\"left\" >
<a href=\"".$url."\"><img src=\"$SRC\" alt = \"article thumbnail\" id=\"titleImg\"/></a>
<div id = \"feature2_1\">
  <a href= \"$url\" id = \"titletext\" alt = \"article title\">$donetitle</a>
  <div id = \"feature2_2\">
  <p id=\"resultuser\" >$username1 <b style=\"color:black;font-style:normal;\">&nbsp;&nbsp;&#x25cf;&nbsp;&nbsp;".$finviews." views</b></p>
  <p id=\"resultp2\">$donedesc1</p>
  </div>
  </div>
 </div>";

这应该将bae64重新组合成图像,但它并没有。为什么这不起作用?回显的结果用作图像中的SRC值。如果重要,Base64以longtext类型的值存储在数据库中。我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:0)

告诉broswer你正在使用数据-uri。 您使用数据的方式是data:[<MIME-type>][;charset=<encoding>][;base64],<data>

在你的情况下不需要charset,所以图像src应该是 - data:image/<image_encoding>;base64,<base_64_encoded_data>

请注意分号和逗号。 忽略尖括号。它们只是为了让事情更清晰,不在代码中使用。

顺便说一下,这不是很棒的代码,但足够好。它很容易受到XSS的攻击。

if(isset($_GET['id'])){
$id = mysql_real_escape_string($_GET['id']);
$query = mysql_query("SELECT * FROM `entree` WHERE `realID` = '$id'");