如何检查blob文件是一个图像在Laravel
How to check a blob file is a image in Laravel?
我使用Laravel 5.3
,
我用javascript裁剪图像并用ajax上传。
裁剪后的图像在上传时将更改为blob文件。
但在后端,如何检查blob文件是一个图像?
public function changeAvatar(Request $request)
{
$user = 'Auth::user();
$blob = $request->croppedImage;
$destinationPath = 'images/uploads/';
$fileName = $user->id . '_' . time() . '.png';
$file = file_put_contents($destinationPath.$fileName, $blob);
$input = array('image' => $file);
$rules = array(
'image' => 'image'
);
$validator = 'Validator::make($input, $rules);
if ( $validator->fails() ) {
return 'Response::json([
'success' => false,
'errors' => $validator->getMessageBag()->toArray()
]);
}
$user ->avatar = '/'.$destinationPath.$fileName;
$user ->save();
return 'Response::json([
'success'=>true,
'avatar'=>asset($destinationPath.$fileName),
]);
}
文件是一个图像,但错误总是这样:
{"success":false,"errors":{"image":["image must be an image."]}}
您可以使用首位测试来测试blob的内容。
这样,就不需要先将文件上传到文件系统,然后再删除。
说明如下:答案
如果可以的话试试这个:
将blob写入目标路径后,执行以下操作:
//...
$file = file_put_contents($destinationPath.$fileName, $blob);
$uploadedFile = new 'Illuminate'Http'UploadedFile($file, "dummy");
$input = array('image' => $uploadedFile);
//...
Laravel的图像验证要求文件必须是UploadedFile的一个实例才能通过验证
相关文章:
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- laravel中的ajax会重新加载一个空白页面
- 根据下拉框的选定值,我需要更改laravel 5中的另一个字段值
- 动态选择字段,在另一个选择字段 - Laravel 5.2 和 JS 中更改后重新填充
- Laravel,$.ajax POST做一个GET请求
- 从 laravel 5 中的另一个目录获取资产
- Laravel 4,在javascript中传递一个变量来路由
- 在Laravel Elixir中创建一个任务,以指定的顺序运行Gulp任务
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- 用javascript调用一个控制器函数,该函数将使用ajax(Laravel 4)在数据库中存储一个条目
- 在laravel的HTML正文中设置一个javascript值
- 如何检查blob文件是一个图像在Laravel
- 如何让一个laravel 5.3应用程序在SASS/JS发生变化时自动加载
- 添加一个文件夹到路径- Laravel
- 通过Laravel返回一个Javascript文件
- 我如何张贴一个表单在laravel 5使用ajax
- 如何只在laravel中调用一个javascript资源
- 在不使用npm的情况下,将laravel-echo和pusher-js作为一个简单的js文件安装
- 有可能在普通的Laravel中创建一个web聊天应用程序吗?
- 在数据库中存储一个可以动态添加字段的表单数组(laravel)