Symfony图片上传

时间:2013-01-09 18:48:17

标签: php symfony-1.4

我无法找到为什么我的代码无法正常工作。我尝试通过表单上传图像并将其保存在目录中,但它不存在。对于测试我在表单上回显了文件对象,以显示文件名和扩展名及其正确,但不保存。

这是我的代码:

形式:

class WgrajForm extends sfForm
{
  public function configure()
  {
    $this->setWidgets(array(
      'zdjęcie' => new sfWidgetFormInputFile(),
      'nazwa'   => new sfWidgetFormInput(),
    ));

     $this->setValidators(array(
        'zdjęcie'    =>  new sfValidatorFile(array(
          'mime_types' => 'web_images',
          'path'       => '/projektSymfony/web/images',
        ),array(
          'mime_types' => 'Plik może być tylko zdjęciem'
        )
      ),
      'nazwa' => new sfValidatorString(array(), array('required' => 'pole wymagane')),
    ));

    $this->getWidgetSchema()->setNameFormat('wgraj[%s]');
  }
}

动作:

public function executeDodaj(sfWebRequest $request)
{
  $this->form= new WgrajForm();

  if ($request->isMethod('post'))
  {
    $this->form->bind(
    $request->getParameter('wgraj'),
    $request->getFiles('wgraj'));

    if ($this->form->isValid())
    {
      $wgrane       = $this->form->getValues();
      $plik         = $wgrane['zdjęcie'];
      $pliknazwa    = $wgrane['nazwa'];
      $rozszerzenie = $plik->getExtension($plik->getOriginalExtension());
      $plik->save('/projektSymfony/web/images/'.$pliknazwa.$rozszerzenie);
      //$this->redirect('galeria/index');
    }
  }
}

1 个答案:

答案 0 :(得分:0)

在您的案例中使用pathsfConfig::get('sf_upload_dir')时,sfConfig::get('sf_web_dir')参数会更好。

您的行动中不需要save()小部件。您只需要保存表单,然后它就会保存您的图像。

if ($this->form->isValid())
{
  $this->form->save();

  $this->redirect('galeria/index');
}

看一下文档,你会发现很多信息,特别是the part of Jobeet tutorial about Form