在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 App\Http\Controllers;
  use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; use App\Models\PhotoModel; /** * 该控制器用来接收并存储图片至本地; */ 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 "文件格式不正确"; } }}`

 

posted @ 2018-03-08 18:03  葉蕓榕  阅读(810)  评论(2编辑  收藏  举报