php将base64转为图片保存到服务器

前端发送base64字符串

//上传到后台,imgData是一个base64d文件的字符串。
                   var dataFile = new FormData();
                   dataFile.append('file', imgData);
                   $.ajax({
     
                    url: './lib/savePact.php',
                    type: 'post',
                    data: dataFile, //发给后端的formData
                    processData: false, //必填 必须false 才会避开jq对formdata的默认处理 XMLHttpRequest才会对formdata进行正确处理  否则会报Illegal invocation错误
                    contentType: false, //必填 必须false 才会加上正确的Content-Type
                    success: function (res) {
     
                        console.log(res)
                    },
                    fail(err){
     
                        console.log(err)
                    }
                  })

后端 savePact.php 文件



header('Access-Control-Allow-Origin:*'); // CORS



//获取ajax传来的base64编码,$_POST['img']是你后台获取到的图片
$base64_image_content = $_REQUEST["file"];
//图片保存的位置
$path= 'C:/wamp64/www/dist/h5/mingziPact/pactfiles/';
//这个是自定义函数,将Base64图片转换为本地图片并保存
$data = base64_image_content($base64_image_content,$path);
echo $data;
/**
 * 将Base64图片转换为本地图片并保存
 * @param  $base64_image_content 要保存的Base64
 * @param  $path 要保存的路径
 */
function base64_image_content($base64_image_content,$path){
     
	//匹配出图片的格式
	if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
     
		//后缀 
		$type = $result[2];
		//创建文件夹,以年月日
		$new_file = $path.date('Ymd',time())."/";
		if(!file_exists($new_file)){
     
			//检查是否有该文件夹,如果没有就创建,并给予最高权限
			mkdir($new_file, 0700);
		}
		$new_file = $new_file.time().".{
       $type}";	//图片名以时间命名
		//保存为文件
		if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
     
			//返回这个图片的路径
		    return $new_file;
		}else{
     
			return false;
		}
	}else{
     
		return false;
	}
}



   
?>

解决问题时借鉴了很多大佬的文章,浏览器一关就找不回出处了,厚颜说是原创,见谅。

你可能感兴趣的:(需求案例,javascript,php)