我正在尝试通过在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
} ?>
答案 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));