zoukankan      html  css  js  c++  java
  • php接收并存储base64位字符串图片

    代码主体

    我后台的框架使用的是laravel,所以这里使用了laravel自带的存储类
    接收并存储代码

        public function paste(Request $request){
            // 存储的文件
            $base64Str = $request->input('base64');
    
            // 正则匹配数据
            preg_match('/^(data:s*image/(w+);base64,)/', $base64Str, $res);
            // 解析真正的图片字符串
            $file = base64_decode(Str::after($base64Str, $res[1]));
    
            // 存储的文件,指定了当前磁盘的根目录
            $filePath = $this->fileName('/editormd/'.now()->year, $res[2]);
    
            // 存储在当前磁盘中不存在的文件
            Storage::disk('public')->put($filePath, $file);
    
            return response()->json(['success'=>1, 'url'=>'/storage'.$filePath]);
        }
    

    步骤:

    1. 先从字符串提取出图片的格式。
    2. 再对剩下的字符串中的图片实体进行base64_decode解码
    3. 其中Str::after($base64Str, $res[1])是获取除去data:image/png;base64,后的字符串,像这样iVBORw0KGgoAAAANSUhEUgAA...
    4. Storage::disk是laravel内置的存储方法,你可以使用file_put_contents代替。
    5. $this->fileName是生成随机的文件名,详情见附录。

    附录:

    // 使用随机字符串生成文件名
        private function fileName($dir, $ext){
            // 循环50次检查文件,知道发现不存在的文件为止
            $start = 0;
            do{
                $fileName = $dir.'/'.Str::random(40).'.'.$ext;
                if(!Storage::disk('public')->exists($fileName)){
                    break;
                }else{
                    $start ++;
                }
            }while($start <= 50);
    
            return $fileName;
        }
    
  • 相关阅读:
    conda更换为清华镜像源
    NVDIA的GPU驱动升级
    Windows使用nvidia-smi查看GPU信息
    查询GPU是否支持CUDA
    PyTorch教程【一】Pytorch环境的配置及安装
    JAVA基础篇—继承
    SQL
    随机数
    hdu 4751 Divide Groups 二分图
    hdu 4126 Genghis Khan the Conqueror hdu 4756 Install Air Conditioning 最小生成树
  • 原文地址:https://www.cnblogs.com/hxsen/p/12688527.html
Copyright © 2011-2022 走看看