2014-04-20 2 views
4

javascript로 localstore에 저장된 사진을 보내려고하지만이를 가져 와서 표시 할 수 없습니다.ajax 게시물을 사용하여 localstore에서 mysql로 ​​이미지 전송

자바 부 :

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를 수행하려고 시도 했습니까? 데이터베이스에서 데이터를 검색 할 때 base64_decode를 할 필요가 있습니다 ... –

+0

길을 잃을 때마다 변수를 기록해야합니다. ajax 전에 스크립트에서 console.log를 사용하십시오. firephp 또는 file_put_contents를 PHP 부분에 추가 할 수 있습니다. html에서는 페이지 소스를보고 img 태그에 어떤 내용이 삽입되어 있는지 확인할 수 있습니다. 적어도 문제가 발생한 위치를 알려줘야합니다. – billynoah

답변

0

json에서 POST까지 인코딩 된 값을 보낼 때 이러한 값은 $_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); 

그러면 이미지 데이터가 포함 된 배열이 표시됩니다.

관련 문제