Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查blob文件是否为Laravel中的图像?_Javascript_Php_Laravel - Fatal编程技术网

Javascript 如何检查blob文件是否为Laravel中的图像?

Javascript 如何检查blob文件是否为Laravel中的图像?,javascript,php,laravel,Javascript,Php,Laravel,我使用的是Laravel5.3, 我用javascript裁剪图像,并用ajax上传。 上载时,裁剪的图像将更改为blob文件 但在后端,如何检查blob文件是否为映像 public function changeAvatar(Request $request) { $user = \Auth::user(); $blob = $request->croppedImage; $destinationPath = 'images/uploads/'; $fil

我使用的是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写入目标路径后,请执行以下操作:

//...
$file = file_put_contents($destinationPath.$fileName, $blob);

$uploadedFile = new \Illuminate\Http\UploadedFile($file, "dummy");

$input = array('image' => $uploadedFile);
//...
Laravel的图像验证要求该文件是UploadedFile的实例,才能通过验证。

如果可以,请尝试以下操作:

将blob写入目标路径后,请执行以下操作:

//...
$file = file_put_contents($destinationPath.$fileName, $blob);

$uploadedFile = new \Illuminate\Http\UploadedFile($file, "dummy");

$input = array('image' => $uploadedFile);
//...

Laravel的图像验证要求文件是UploadedFile的实例才能通过验证。

您可以使用第一位测试来测试blob的内容

这样,就不需要先将文件上载到文件系统,然后再删除


这里解释道:

您可以使用第一位测试来测试blob的内容

这样,就不需要先将文件上载到文件系统,然后再删除


这里解释如下:

UploadedFile.php第88行中的ErrorException:第28行的Symfony\Component\HttpFoundation\File\UploadedFile::u construct()缺少参数2,在D:\wnmp\www\laravel-5-3-dev\app\Http\Controllers\userscocontroller.php中调用,并定义我很抱歉。论点二是“原名”。提供一个伪字符串应该可以。UploadedFile.php第88行中的ErrorException:在第28行的D:\wnmp\www\laravel-5-3-dev\app\Http\Controllers\userscocontroller.php中缺少Symfony\Component\HttpFoundation\File\UploadedFile::\uu construct()的参数2,我很抱歉。论点二是“原名”。提供一个虚拟字符串应该可以。