2016-11-03 2 views
0

Я использую Laravel 5.3,
Я обрезаю изображение с помощью javascript и загружаю его с помощью ajax.
Кадрированное изображение при загрузке изменяется на файл blob.Как проверить файл blob - это изображение в Laravel?

Но в бэкэнд, как проверить файл 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."]}} 

ответ

1

Попробуйте это, если это произведение:

После записать блоб в пути назначения, сделать это :

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

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

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

Проверка правильности изображения Laravel требует, чтобы файл был экземпляром UploadedFile способный пройти проверку.

+0

ErrorException в UploadedFile.php линии 88: недостающее аргумент 2 для Symfony \ Component \ HttpFoundation \ File \ UploadedFile :: __ конструкт(), называемый в D: \ wnmp \ WWW \ Laravel -5-3-dev \ app \ Http \ Controllers \ UsersController.php в строке 28 и определен – zwl1619

+0

Прошу прощения. Аргумент 2 - «originalName». Поставить фиктивную строку должно быть хорошо. –

1

Вы можете проверить содержимое blob, используя тест первых бит.

Таким образом, нет необходимости сначала загружать файл в файловую систему и удалять его позже.

Это объясняется здесь: answer

Смежные вопросы