2016-11-03 7 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: をsymfonyの\コンポーネントの引数2がありませんが、\ HttpFoundation \にUploadedFile \ファイルDに呼ば:: __構築物()、:\ WNMP \ WWW \ laravel -5-3-dev \ app \ Http \ Controllers \ UsersController.php 28行目で定義済み – zwl1619

+0

申し訳ありません。引数2は "originalName"です。ダミーの文字列を供給しても問題ありません。 –

1

第1ビットテストを使用して、ブロブの内容をテストできます。

このように、ファイルをファイルシステムにアップロードして後で削除する必要はありません。

それは、ここで説明しています:UploadedFile.phpライン88で

関連する問題