laravel 存储base64格式图片

laravel 存储base64格式图片

1、总结

一句话总结:

用正则替换base64图片编码的编码头便可
存储图片的话,用laravel能够用Storage的put方法,原生php能够用file_put_contents方法
替换编码头 preg_match('/^(data:\s*image\/(\w+);base64,)/',$base64_img,$res); $base64_img=base64_decode(str_replace($res[1],'', $base64_img)); 存储图片 $ans=Storage::disk('user_img')->put($new_file, $base64_img); 或 if (file_put_contents($new_file,base64_decode(str_replace($res[1],'', $imgBase64))))

 

 

2、laravel存储64位图片实例

 1     //一、上传base64位的图片:用户的头像
 2     public function uploader_img_base64(Request $request){  3 
 4         //用户id
 5         $u_id=Auth::guard('user')->user()->id;  6         if(!$u_id){  7             return ['valid' => 0, 'message' => '用户信息过时,请刷新页面重试!!'];  8  }  9 
10         $base64_img=$request->input('base64_img'); 11         $base64_img=urldecode($base64_img); 12         //获取原图片的相对路径
13         $old_user_img_url=$request->input('old_user_img_url'); 14         $position=stripos($old_user_img_url,'user_img/'); 15         if(strlen($old_user_img_url)>$position+9) 16         $old_user_img_url_relative=substr($old_user_img_url,$position+9); 17 
18         preg_match('/^(data:\s*image\/(\w+);base64,)/',$base64_img,$res); 19 
20 
21         if (isset($res[2])) { 22             //获取图片类型
23             $type = $res[2]; 24 
25             //图片保存路径
26             $new_file = ''.date('Ym',time()).'/'; 27             //$new_file = "attachment/user_img/".date('Ymd',time()).'/'; 28 
29  //图片名字
30             $new_file = $new_file.str_random(10).mt_rand(10000,99999).'.'.$type; 31             $base64_img=base64_decode(str_replace($res[1],'', $base64_img)); 32             //dd($base64_img);
33             $ans=Storage::disk('user_img')->put($new_file, $base64_img); 34 
35             if ($ans) { 36                 $ans2=Storage::disk('user_img')->delete($old_user_img_url_relative.''); 37                 //dd($ans2); 38  //$img_url=asset('attachment/user_img/'.$new_file);
39                 $img_url='attachment/user_img/'.$new_file; 40                 //修改用户的头像
41                 User::where('id',$u_id)->update(['picture'=>$img_url]); 42 
43                 //unlink($old_user_img_url_relative.'');
44                 return ['valid' => 1, 'message' => $img_url]; 45             } else { 46                 return ['valid' => 0, 'message' => '上传失败请重试!']; 47  } 48 
49         }else{ 50             return ['valid' => 0, 'message' => '上传失败请重试!!']; 51  } 52 
53     }

 

 

 

3、laravel 存储前端上传base64图片

转自或参考:laravel 存储前端上传base64图片
https://blog.csdn.net/qq_23953793/article/details/103064293php

 

用postman模拟前端Android 上传图文信息
html

 

 


PHP laravel后端代码前端

public function store(Request $request)
    {

        $moment = new Moment();
        $moment->title = $request->get('title');
        $moment->date = $request->get('date');
        $moment->description = $request->get('description');
        $moment->user_id = $request->get('user_id');
        $image = $request->get('image_base64');  // your base64 encoded
        $image = str_replace('data:image/png;base64,', '', $image);
        $image = str_replace(' ', '+', $image);

        $imagePath= 'images/'.str_random(10) . '.png';
        Storage::disk('public')->put($imagePath, base64_decode($image));

        $moment->image_base64 = $imagePath;
        $moment->save();

        return response()->json([
            'code' => 1,
            'message' => 'success',
            'date' => ''
        ]);


    }

数据库:
在这里插入图片描述
目录存储:
在这里插入图片描述laravel

 

 

4、php将base64字符串转换为图片

转自或参考:php将base64字符串转换为图片
https://www.cnblogs.com/yexiaocangji/p/7690688.html数据库

一些插件产生的图片数据是base64格式的,好比cropper,当咱们要上传到服务器想要保存为图片文件的时候,能够用如下方法json

 

//获取图片base64字符串
                $imgBase64 = $_REQUEST['img'];

        if (preg_match('/^(data:\s*image\/(\w+);base64,)/',$imgBase64,$res)) {
             //获取图片类型   
                        $type = $res[2];

            //图片保存路径
            $new_file = "static/images/".date('Ymd',time()).'/';

            if (!file_exists($new_file)) {

                mkdir($new_file,0755,true);
            }

            //图片名字
            $new_file = $new_file.time().'.'.$type;

            if (file_put_contents($new_file,base64_decode(str_replace($res[1],'', $imgBase64)))) {

                $msg['msg'] = 'ok';

                echo json_encode($msg);
            } else {

                $msg['msg'] = 'no';

                echo json_encode($msg);
            }
        }
相关文章
相关标签/搜索