如何使用没有实体类的表单上传文件


How to upload file using a form without an entity class

我尝试使用没有实体类的表单上传文件。到目前为止运气不好。

  // 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')行,一切都正常:

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

附言:我已经检查了表单和属性enctype="multipart/form-data"的html代码。所以这不是问题。

我也希望这能帮助其他人:

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

您是否检查过文件是否超过服务器最大文件大小限制?默认值为2MB。我还没有使用Symfony 2.0,所以我不确定。