【问题标题】:How to store Base64 string in mySQL as BLOB如何在 mySQL 中将 Base64 字符串存储为 BLOB
【发布时间】:2013-03-05 02:13:26
【问题描述】:

我正在尝试使用下面的代码将 base64 字符串插入 blob,我正在将一个 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";
}

【问题讨论】:

    标签: php mysql sql image blob


    【解决方案1】:

    尝试使用:

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

    然后将echo "BLOB: " . "---" . $blob;改为:

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

    否则,您只是在转储 string 值,这就是您得到此结果的原因。

    【讨论】:

    • 我没有尝试输出它或任何东西,我只是得到一个损坏的文件,数据库中没有扩展名
    • 它仍然可以完美显示图像文件,但在 mysql 中有一个没有扩展名的损坏文件
    • 使用提供的代码更改了我的问题,以便您可以更清楚地看到它
    • @Dave 尝试使用$_FILES["image"] 而不是$_POST["image"]。并删除$encodedData = str_replace(' ','+',$json_obj);
    • 这给了我 。由于数据库中损坏的文件的大小要小得多,我将在我的问题中添加一些关于 php 的背景
    【解决方案2】:

    您是否尝试过使用mysql base64 函数:TO_BASE64('string');

    【讨论】:

      猜你喜欢
      • 2021-02-01
      • 2015-12-20
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2019-10-03
      • 1970-01-01
      相关资源
      最近更新 更多