2012-02-03 9 views
3

エンティティクラスのないフォームを使用してファイルをアップロードしようとしました。今まで運がない。エンティティクラスなしのフォームを使用してファイルをアップロードする方法

// Controller 
    public function uploadAction() { 
    $request = $this->getRequest(); 
    $form = $this->createFormBuilder() 
      ->add('images', 'file') // If I remove this line data is submitted correctly 
      ->add('dir', 'text') 
      ->getForm(); 

    if ($request->getMethod() == 'POST') { 
     $request = $this->getRequest(); 
     $form->bindRequest($request); 

     $data = $form->getData(); 
     var_dump($data); 
    } 
    else 
     return $this->render('OverseerMainBundle:Default:form.html.twig', array(
      'form' => $form->createView(), 
    )); 
    } 

// form.html.twig 
{% block body %} 
<form action="{{ path('OverseerMainBundle_upload') }}" method="post" {{ form_enctype(form) }}> 
    {{ form_widget(form) }} 

    <input type="submit" /> 
</form> 
{% endblock %} 

これまでのvar_dumpエコー:

array(2) { ["images"]=> NULL ["dir"]=> NULL } 

私は行を削除する場合は->add('images', 'file')すべてはokです:

array(1) { ["dir"]=> string(4) "test" } 

P.S.を私はフォームと属性enctype="multipart/form-data"のhtmlコードを確認しました。だからそれは問題ではない。

答えて

2

ファイルがサーバーの最大ファイルサイズ制限を超えていないことを確認しましたか?デフォルトは2MBです。私はまだSymfony 2.0を使用していないので、私はそれについては分かりません。

+0

ああ、私はnoobのように感じます。あなたが正しいです。ありがとうございました!!! –

+2

LOL、心配する人もいません。もう少しコーヒーを持ってください。 – thenetimp

3

はまた、私は、これは他の人に役立つだろう願っています:

if ($form->isValid()) { 
     $file = $form->get('file')->getData(); 
     $name = $file->getClientOriginalName(); 
     $dir = __DIR__.'/../../../../web/uploads'; 

     $file->move($dir, $name) ; 
    } 
+0

誰かが$ form-> get( 'file') - > getData()がSymfony 2.7.40で動作しない理由を知っていますか? nullを返します。 – Stev

+0

セキュリティバグを修正してBCを導入したのはv2.7.38です。https://github.com/symfony/symfony/pull/24993 – Stev

+0

私は2.7を使用して停止しました。私は2.3から2.8へと飛び降りました。私は現在、3.4の準備をしています。 –

関連する問題