2017-03-06 5 views
0

laravelの検証を使用してアップロードされたファイルを検証しようとしていますが、問題があります。 Gd errorLaravel画像のアップロードの有効化

私が介入イメージパッケージを使用しています:問題は、私はBMPファイルを使用する場合、私はこのエラーを取得している

$this->validate($request, [ 
     'image' =>'mimetypes:image/jpeg,image/png,image/gif', 

     ]); 

     $avatar = $request->file('image'); 

     $fileName = time(). '.' . $avatar->getClientOriginalExtension(); 
     Image::make($avatar)->resize(300,300)->save(public_path('uploads/avatar/' . $fileName)); 

     $user = Auth::user(); 
     $user->avatar = $fileName; 
     $user->save(); 

は、ここに私のコードです。私はむしろimagickドライバーに切り替えるつもりはない。

アイデア?

+0

の下で試してみてください。これは何ですか? 'image' => 'mimetypes:image/jpeg、image/png、image/gif、image/bmp'、 –

+0

あなたが使っている介入画像パッケージのバージョンは? –

答えて

0

介入パッケージのコードを見ると、あなたがprocessBmp関数に2つの実装を見ることができます:

介入/画像/ Gdを/ Encoder.php:

protected function processBmp() 
{ 
    throw new \Intervention\Image\Exception\NotSupportedException(
     "BMP format is not supported by Gd Driver." 
    ); 
} 

介入/画像/ Imagick/Encoder.php:

protected function processBmp() 
{ 
    $format = 'bmp'; 
    $compression = \Imagick::COMPRESSION_UNDEFINED; 
    $imagick = $this->image->getCore(); 
    $imagick->setFormat($format); 
    $imagick->setImageFormat($format); 
    $imagick->setCompression($compression); 
    $imagick->setImageCompression($compression); 
    return $imagick->getImagesBlob(); 
} 

だから私はそれはあなたが唯一のimagickで、GDドライバでそれを行うことができないことを言っても安全だと思います。

0

単に"intervention/image": "~2"を使用するか、ドライバをImagickに変更してください。 GDがBMPをネイティブにサポートしていないことは、既知の問題です。詳細はissue page on githubを参照してください。

0

画像imageのLaravelカスタムルールを使用しない理由は何ですか?

$this->validate($request, [ 
     'image' =>'image', 

     ]); 
0

このソリューションは、あなたのエラーを修正することを願っています、私はあなたがあなたのイメージアレイ内のBMPのMIMEを宣言しなければならないと思うロジック

public function postUpload(Request $request) 
    { 

    $input = $request->all(); 
    $rules = array(
     'uploadFile' => 'image|max:8000' 
    ); 

    $validation = Validator::make($input, $rules); 

    if ($validation->fails()) 
    { 
     return array(
      'validation_failed' => true, 
      'errors'   => $validation->errors()->toArray() 
    ); 
    } 

    $file = $request->uploadFile; 
    $destinationPath = 'uploads/img'; 

    // Get real extension according to mime type 
    $ext = $file->extension(); 
    // Hash processed file name, including the real extension 
     $hashname   = date('H.i.s').'-'.md5($request->_token).'.'.$ext; 
     $upload_success  = $request->uploadFile->storeAs($destinationPath, $hashname); 


     Image::configure(array('driver' => 'imagick')); 
     $img = Image::make(storage_path() . '/app/uploads/img/' . $hashname); 
     $img->resize(230, null, function ($constraint) { 
       $constraint->aspectRatio(); 
     }); 
     $img->save(storage_path() . '/app/uploads/lowres/' .$hashname ,80); 

     $user_image = new User_images(); 
     $user_image->id_user = Auth::user()->id; 
     $user_image->handler = $hashname; 
     $user_image->save(); 


     return array('status' => 'success','message'=> 'Image has been uploaded successfully','file_path'=>'/uploads/'.$hashname); 
関連する問題