有些BLOB无法保存到SQL,但有些可以

时间:2015-11-12 07:50:31

标签: php sql image blob

我正在尝试通过在SQL中使用BLOB类型将一些图像保存到SQL但是当一些图像(我的图像是base64格式并且已经解码为BLOB)无法保存到SQL但另一个图像时,我遇到了麻烦。<登记/> MY SQL TABLE

saveFile = function () {
	//window.open(app.stage.toDataURL());
    var dataUrl = app.stage.toDataURL();
	//var name= jQuery("#name").val();
    jQuery.ajax({
        type: "POST",
        url: "saveFile.php",
        data: { image : dataUrl },
        success: function(data){
           alert(data);
        }
    });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<?php
//echo DIRECTORY_SEPARATOR;
//echo $_SERVER[ 'DOCUMENT_ROOT' ];
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] . DS . 'joomla' );

require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );

$mainframe =& JFactory::getApplication('site');

$db = JFactory::getDBO();

$input = new JInput;
$post = $input->getArray($_POST);
$user = JFactory::getUser();

//echo $user->id;   

if(isset($_POST['image'])){
    $id = $user->id;
    $url = $post['image'];

    //echo $url;
    $image = base64_decode($url);

    echo $image;

    $query = $db->getQuery(true);

    $columns = array('id_user', 'image'); // add more table columns here
    $values = array($db->quote($id), $db->quote($image)); // add more values here

    $query
        ->insert($db->quoteName('image_table2'))
        ->columns($db->quoteName($columns))
        ->values(implode(',', $values));

    $db->setQuery($query);

    //$db->query(); // Use for Joomla 2.5
    $db->execute(); // Use for Joomla 3.x
} ?>

1 个答案:

答案 0 :(得分:0)

是的,经过2个小时的研究,我发现base64_decode有很长的问题&#34; base64代码,所以解决方案是

$image = ""; for ($i=0; $i < ceil(strlen($url)/256); $i++) $image = $image . base64_decode(substr(str_replace(' ', '+', $url),$i*256,256));