laravel 存储base64格式图片

一、总结

一句话总结:

用正则替换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))))

二、laravel存储64位图片实例

     //1、上传base64位的图片:用户的头像
public function uploader_img_base64(Request $request){ //用户id
$u_id=Auth::guard('user')->user()->id;
if(!$u_id){
return ['valid' => 0, 'message' => '用户信息过期,请刷新页面重试!!'];
} $base64_img=$request->input('base64_img');
$base64_img=urldecode($base64_img);
//获取原图片的相对路径
$old_user_img_url=$request->input('old_user_img_url');
$position=stripos($old_user_img_url,'user_img/');
if(strlen($old_user_img_url)>$position+9)
$old_user_img_url_relative=substr($old_user_img_url,$position+9); preg_match('/^(data:\s*image\/(\w+);base64,)/',$base64_img,$res); if (isset($res[2])) {
//获取图片类型
$type = $res[2]; //图片保存路径
$new_file = ''.date('Ym',time()).'/';
//$new_file = "attachment/user_img/".date('Ymd',time()).'/'; //图片名字
$new_file = $new_file.str_random(10).mt_rand(10000,99999).'.'.$type;
$base64_img=base64_decode(str_replace($res[1],'', $base64_img));
//dd($base64_img);
$ans=Storage::disk('user_img')->put($new_file, $base64_img); if ($ans) {
$ans2=Storage::disk('user_img')->delete($old_user_img_url_relative.'');
//dd($ans2);
//$img_url=asset('attachment/user_img/'.$new_file);
$img_url='attachment/user_img/'.$new_file;
//修改用户的头像
User::where('id',$u_id)->update(['picture'=>$img_url]); //unlink($old_user_img_url_relative.'');
return ['valid' => 1, 'message' => $img_url];
} else {
return ['valid' => 0, 'message' => '上传失败请重试!'];
} }else{
return ['valid' => 0, 'message' => '上传失败请重试!!'];
} }

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

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

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

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' => ''
]); }

数据库:

目录存储:

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

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

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

                //获取图片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);
}
}
 
 
 

laravel 存储base64格式图片的更多相关文章

  1. uniapp微信小程序保存base64格式图片的方法

    uniapp保存base64格式图片的方法首先第一要先获取用户的权限 saveAlbum(){//获取权限保存相册 uni.getSetting({//获取用户的当前设置 success:(res)= ...

  2. 微信小程序 base64格式图片的显示及保存

    当我们拿到如下base64格式的图片(如下图)时, base64格式的图片数据: 如何显示 ? 使用image标签,src属性添加data:image/png;base64, (注意:若imgData ...

  3. base64格式图片转换为FormData对象进行上传

    原理:理由ArrayBuffer.Blob和FormData var base64String = /*base64图片串*/; //这里对base64串进行操作,去掉url头,并转换为byte va ...

  4. js获取base64格式图片预览上传并用php保存到本地服务器指定文件夹

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  5. C#保存Base64格式图片

    .前端页面代码 /** * 通过图片本地路径获取图片真实大小,并进行压缩 */ function getLocalRealSize(path, callback) { var img = new Im ...

  6. .net core 存储base64的图片或文件

    public void SaveImageFromBase64(string base64string) { byte[] b = Convert.FromBase64String(base64str ...

  7. 微信支付特约商户进件中base64格式图片上传

    微信图片上传接口地址:https://api.mch.weixin.qq.com/v3/merchant/media/upload 1.上传方法 1 using HttpHandlerDemo; 2 ...

  8. 微信三方平台开发上传base64格式图片至临时素材

    1 public string UploadImgByB64(string b64) 2 { 3 //access_token 需要自己获取 4 string access_token = getTo ...

  9. html中canvas渲染图片,并转化成base64格式保存

    最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取 ...

随机推荐

  1. 广联达C++面经(一站式西安) - 2019秋招

    9月7号通知在广联达西安面试,早上在高新面完中兴一面就赶忙坐地铁倒公交去面试了.  一面(大概30-40min) 刚去签了一个到,就带我去面试了,在一个小型会议室,面试我的是一个女面试官(第一次碰见女 ...

  2. Delphi INI 文件读写

    delphi中,配置文件的相关操作. () INI文件的结构: ;这是关于INI文件的注释部分 [节点] 关键字=值 ... INI文件允许有多个节点,每个节点又允许有多个关键字, “=”后面是该关键 ...

  3. MySQL Backup--Xtrabackup备份常见错误

    1.DDL操作与Xtrabackup备份冲突 当MySQL使用xrabckup进行备份时,如果执行DDL进行表修改,会导致xrabckup备份失败. 错误类似于: InnoDB: Last flush ...

  4. ubuntu-网络配置文件

    vim   /etc/NetworkManager/system-connections/Wired connectione 1 

  5. centos7安装后,一些小优化

    1.设置静态ip vim /etc/sysconfig/network-scripts/ifcfg-ens33 将BOOTPROTO=dhcp修改为BOOTPROTO=static ONBOOT=no ...

  6. 学了 C 语言到底能做什么, 能从事什么工作?

    前言 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向. 开始我都是直接说可以开发嵌入式啊,做 ...

  7. oracle添加序列

    原文地址 http://blog.itpub.net/24099965/viewspace-1116923/ 1.创建.删除 create sequence seq_newsId increment ...

  8. 个性化排序算法实践(五)——DCN算法

    wide&deep在个性化排序算法中是影响力比较大的工作了.wide部分是手动特征交叉(负责memorization),deep部分利用mlp来实现高阶特征交叉(负责generalizatio ...

  9. (一)WCF基础

    我们近期在做项目的时候用到了WCF,之前已经看了部分视频,对于WCF有了一定的了解,但仅限于能够根据搭建好的框架使用WCF,还不了解.所以就进行了研究,这样既有实践也能增加理论,二者结合,使用起来更胜 ...

  10. 2019-2020-1 20199301《Linux内核原理与分析》第七周作业

    第六章 进程的描述和进程的创建 学习笔记 1.操作系统的三大管理功能: 进程管理 内存管理 文件系统 2.操作系统最核心的功能是进程管理. 3.为了管理进程,内核要描述进程的结构,也成为进程描述符,进 ...