2013-03-16 642 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

相关问题