自己研究了一下,当黏贴图片到编辑器后,可以显示,发帖之后,这个图片默认保存到数据库中
下面这个代码可以把图片数据提取出来,保存成图片格式,并将图片地址替换到原来的位置,减小数据库开销。
// 如果是粘贴过来的图片,传递过来的是base64加密的数据,将其保存为图片,替换过来
// 注意,要data/attachment/forum/img/ 有写入权限
$jf_img_data = @$_POST['message'];
preg_match_all('/\[img\]data\:image.*?\[\/img\]/is',$jf_img_data,$jf_imgs);
$jf_imgs = $jf_imgs[0];
foreach( $jf_imgs as $jf_k => $jf_value ){
$jf_v = ltrim($jf_value,'[img]data:image/');
$jf_v = rtrim($jf_v,'[/img]');
list($jf_type,$jf_v) = explode(';',$jf_v);
$jf_v = ltrim($jf_v,'base64,');
$jf_name= 'data/attachment/forum/img/'.md5($jf_v).".$jf_type";
$jf_img = base64_decode($jf_v);
file_put_contents($jf_name,$jf_img);
// 将编码的图片,替换为实际路径
$_POST['message'] = str_replace($jf_value,'',$_POST['message']);
}
@$_G['gp_message'] = @$_POST['message']; |