2013-03-16 250 views
2

我想通過使用下面的代碼插入一個base64字符串到blob中,我得到一個blob添加到數據庫,但它是一個損壞的文件,沒有擴展名。如何將base64字符串存儲在mySQL中作爲BLOB

背景:

[request setHTTPMethod:@"POST"]; 
NSString *encodedString = [binaryData base64Encoding]; 
NSString *bodyString = [NSString stringWithFormat:@"image=%@", encodedString]; 

PHP:

$json_obj = $_POST['image']; 
$encodedData = str_replace(' ','+',$json_obj); 
$encodedData= chunk_split(base64_encode(file_get_contents($encodedData))); 
$blob = $encodedData; 
$dbHandle = mysql_connect("--------","-------","------"); 
$dbFound = mysql_select_db("----------"); 

if($dbFound){ 


    $check = "INSERT INTO `Images`(`imageId`, `image`, `userId`, `dateCreated`) ". 
      "VALUES ". 
      "('','$blob','0',null)"; 

    $retval = mysql_query($check, $dbHandle); 

    if(!$retval) 
    { 
     die('Could not enter data: ' . mysql_error()); 
    } 
echo '<img src="data:image/jpeg;base64,' . $blob . '" />'; 
} 
else{ 
     print "No Connection"; 
} 

回答

4

嘗試使用:

$encodedData= chunk_split(base64_encode(file_get_contents($json_obj))); 

然後換echo "BLOB: " . "---" . $blob;到:

echo '<img src="data:image/jpeg;base64,' . $blob. '" />'; 

否則,你只是傾銷string值,這就是爲什麼你會得到這個結果。

+0

我不是tryna輸出它或任何東西,我只是得到一個損壞的文件,在數據庫中沒有擴展名 – Dave 2013-03-16 17:33:27

+0

@Dave OK,嘗試使用上面的方法來編碼它。 – Boris 2013-03-16 17:46:13

+0

它仍然完美地顯示圖像文件,但有一個損壞的文件,在mysql中沒有擴展名 – Dave 2013-03-16 17:56:02

相關問題