base64上传图片时服务器接到的值可能会丢失字符串
解决方法如下:(分为单个上传和多个上传)
<?php $BASE_DIR = "../"; //文件上传 $img = isset($_POST['img'])?$_POST['img']:''; $dir = isset($_POST['dir'])?$_POST['dir']:'img'; $result = array(); $arr = []; if (is_array($img)){ foreach ($img as $v){ if (preg_match('/^(data:s*image/(w+);base64,)/', $v, $result)) { $type = $result[2]; $file = "images/{$dir}/" . date('Ymd', time()) . "/"; if (!file_exists($file)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($file, 0777, true); } $file = $file . time(). '_' .rand(0,100) . ".{$type}"; $data = str_replace(' ','+',$v); if (file_put_contents($file, base64_decode(str_replace($result[1], '', $data)))) { $arr[] = $file; } else { return false; } } } echo json_encode($arr); } else { if (preg_match('/^(data:s*image/(w+);base64,)/', $img, $result)){ $type = $result[2]; $file = "images/{$dir}/" . date('Ymd', time()) . "/"; if (!file_exists($file)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($file, 0777, true); } $file = $file . time() . '_' . rand(0, 100) . ".{$type}"; $data = str_replace(' ', '+', $img); if (file_put_contents($file, base64_decode(str_replace($result[1], '', $data)))) { $file = substr($file,strpos($file,'/')+1); echo json_encode($file); } else { return false; } } }
主要就是把服务器接到的值做一个字符串替换,解决问题!
以上就是这次的全部内容!