2015-11-12 22 views
0

我試圖通過在SQL中使用BLOB類型將一些圖像保存到SQL,但是當某些圖像(我的圖像是base64格式並已解碼爲BLOB)時遇到了問題,不能保存到SQL,但另一個可以。
MY SQL TABLE有些BLOB不能保存到SQL中,但有些可以

saveFile = function() { 
 
\t //window.open(app.stage.toDataURL()); 
 
    var dataUrl = app.stage.toDataURL(); 
 
\t //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

呀,2小時後,研究我發現,BASE64_DECODE有 「很長」 的base64編碼的問題,所以解決的辦法是

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

相關問題