• 在laravel环境下将图片存入MongoDB数据库


    #在laravel环境下将图片存入MongoDB数据库#

    此处使用的是base64方法;

      先获取到上传的图片,再获取其详细信息,代码如下:
    
        $Info = getimagesize($file);
        $Info_data = fread(fopen($file,'r'), filesize($file));
        $base = base64_encode($Info_data);
    
    • $file为获取的图片文件;
    • getimagesize()函数用来获取图片文件信息;
    • fread(,)用来读取文件
      • 第一个参数是 必需 规定要读取打开的文件。
        • fopen($file,'r') 只读,并将文件指针指向开始位置。
      • 第二个参数是 必须 规定要读取的最大字节数。
        • filesize($file) 返回指定文件的大小。
    • base64_encode() 编译 成 base64 格式;

      存入MongoDB数据库的操作:
      
          $photo = new PhotoModel();
          $photo->name = $name;
          $photo->photo_base64 = $base;
          $photo->save();
      

      Emmm~ 这块不明白的话看laravel下的 ☞ MongoDB扩展

      然后就是从MongoDB数据库中拿出并解析成图片,代码如下:
      
          //取出
          $photo_Info = PhotoModel::where('name','=',$name)->take(1)->get(['photo_base64']);
          //转换并输出图片;
          $img = base64_decode($photo_Info[0]['photo_base64']);
          $img_analysis = file_put_contents('./test.jpg', $img);
      
    • base64_decode() 解析 还原成字符串

    • fileputcontents() 将一个字符串写入到文件中

      • 第一个是存储的目录 例如现在指的是当前目录下,生成一个test.jpg文件
      • 图片信息

        接下来就是源码:

    ` <?php 
      namespace AppHttpControllers;
      use IlluminateHttpRequest; use IlluminateHttpUploadedFile; use IlluminateSupportFacadesStorage; use AppModelsPhotoModel; /** * 该控制器用来接收并存储图片至本地; */ class GetPhotoController extends Controller { //获取图片; public function GetPhoto(Request $Request) { if ($Request->hasFile('photo') && $Request->file('photo')->isValid()) { //获取图片值; $file = $Request->file('photo'); //获取输入的name值; $name = $Request->input('name'); $path = $file->path(); //获取当前文件的扩展名; $extension = $file->extension(); //设置支持的文件格式; // $allowed_extensions = ['png','jpg','gif']; // //判断图片文件格式是否支持; // if ($extension && !in_array($extension, $allowed_extensions)) // { // return ['error' => '上传的图片格式不支持(支持png,jpg,gif等)']; // } //设置时间名为文件名 $time = time(); $time = date("y-m-d",$time).'-'.date("H-i-s",$time).$time; $path = $file->storeAs('images',$time.'.'.$extension); //存入MongoDB数据库 //一、转成base64 $Info = getimagesize($file); $Info_data = fread(fopen($file,'r'), filesize($file)); $base = base64_encode($Info_data); //二、存入数据库; $photo = new PhotoModel(); $photo->name = $name; $photo->photo_base64 = $base; $photo->save(); //三、取出 $photo_Info = PhotoModel::where('name','=',$name)->take(1)->get(['photo_base64']); //四、转换并输出图片; $img = base64_decode($photo_Info[0]['photo_base64']); $img_analysis = file_put_contents('./test.jpg', $img); return $base; }else{ return "文件格式不正确"; } }}`
  • 相关阅读:
    测试Remoting服务端和客户端的双向通信
    对T4模板研究针对SQL SERVER的EF代码生成
    菜鸟级WinForm分页控件
    [小技术应用]框架下动态调用用户控件的模态弹出窗体
    根据数据库表动态添加菜单及打开窗体
    Windows Mobile 5.0下蓝牙移动打印测试
    Window Mobile/CE的PC端安装测试
    基于Dev控件,在WinForm下动态配置界面
    TortoiseSVN使用简介
    SQL的一些经典算法
  • 原文地址:https://www.cnblogs.com/YeYunRong/p/8529999.html
Copyright © 2020-2023  润新知