2014-04-20 56 views
4

我想發送一個圖片存儲在本地存儲與JavaScript,但無法檢索並顯示它。發送圖像從本地存儲到MySQL與ajax後

JavaScript部分:

liste['pic'] = localStorage['pic']; 

      $.ajax({ 
       type: "POST", 
       url: "save.php", 
       data: { pic : liste['pic'] }, 
       dataType: "json", 
       success: function(data) { 
        if(data) { 
         alert("Picture sent succesfully"); 
        } 
       } 
       }); 

接收該數據PHP的一部分:

require "lib/connect.php"; 
$pic = $_POST['pic']; 
$insert_query = "INSERT INTO liste (`pic`) VALUES ('".$pic."');"; 
$result = mysql_query($insert_query); 

PHP的一部分,顯示了照片。 表中有東西,但由於它是blob,我無法檢查是否有正確的數據。

$select_query = "Select `pic` From liste;"; 
$result = $dbhandle->query($select_query); 

echo "<table border='1'> 
<tr> 
<th>Image</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td><img src=\"" . $row['pic'] . "\" width=\"200\"/><br/><br/></td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 
$result->closeCursor(); 
mysqli_close($dbhandle); 

從這我得到一個破碎的圖像。什麼不見​​了 ?文字有效,但不是圖像,爲什麼?

+0

也許圖像數據被破壞?發送ajax請求之前,您是否嘗試過使用base64_encode?當你從db中檢索數據時,你需要執行base64_decode ... –

+0

你應該記錄變量的每一步,看看它在哪裏丟失。在ajax之前的腳本中使用console.log。 firephp或file_put_contents在php部分中,並且在html中,您只需查看頁面源代碼即可查看它在img標記中插入的內容。至少應該讓你知道問題出在哪裏。 – billynoah

回答

0

您需要知道的是,當您發送的編碼值爲jsonPOST時,這些值不存在於$_POST變量中。

在POST變量中具有值的唯一方法是使用application/x-www-form-urlencodedmultipart/form-data

如果您想使用其他內容類型,實際上您需要使用'php://input'

例如

$data = json_decode(file_get_contents('php://input'), true); 
$text = print_r($data, true); 

然後,您應該看到包含圖像數據的數組。