此处使用的是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 "文件格式不正确";
}
}}`