2017-09-29 9 views
2

でフォームを送信する前に私は私が正常に動作しているファイルオブジェクトを、アップロードする画像をbase64に変換していますフォームを送信する前に、今、base64形式で画像を渡していた形態を持っていますが、今私は、検証しますアップロードされたファイルイメージ。 これを達成する方法。 私のビルドフォームの方法で私は検証を追加しましたが、動作しません。 今は画像を2MBに制限したいが、2MB以上の画像をアップロードすることさえできる。修正フォーム入力symfonyの

 $builder 
     ->add('picture', FileType::class, [ 
      'label' => $trans('user.picture.name'), 
      'required' => true, 
      'constraints' => [ 
       // new Image(['mimeTypes' => ['image/jpeg']]), 
       new File(['maxSize' => '2M', 'mimeTypes' => ['image/jpeg']]), 
      ], 
     ]); 


function onPreSubmit(FormEvent $event) 
{ 

    $form = $event->getForm(); 
    $data = $event->getData(); 

    list(, $data['imagebase64']) = explode(',', $data['imagebase64']); 

    $filePath = tempnam(sys_get_temp_dir(), 'hijob'); 
    $image = base64_decode($data['imagebase64']); 
    file_put_contents($filePath, $image); 

    $photo = new UploadedFile(
     $filePath, 
     'photo.jpeg', 
     'image/jpeg' 
    ); 

    $data['picture'] = $photo; 
    $event->setData($data); 

} 

答えて

1

私があなたがエンティティクラスのAssertとしてSymfony \ Component \ Validator \ Constraintsを使いたいと思えば、それはこのようなことが行われるべきです。

** 
* @Assert\File(
*  maxSize = "1024k", 
*  mimeTypes = {...}, 
*  mimeTypesMessage = "Please upload a valid ..." 
*) 
*/ 

チェックhttps://symfony.com/doc/current/reference/constraints/File.html

+0

私のフォームは、データクラスを持っていません。 – user8693894

関連する問題