Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF2文件上载-从未存储文件_Php_File Upload_Zend Framework2 - Fatal编程技术网

Php ZF2文件上载-从未存储文件

Php ZF2文件上载-从未存储文件,php,file-upload,zend-framework2,Php,File Upload,Zend Framework2,您好,我有以下设置,调整为上的ZF2FileUpload示例 控制器: public function addAction() { $objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager'); $form = new CreateEventForm($objectManager); $event = new Event(); $form->bi

您好,我有以下设置,调整为上的ZF2FileUpload示例 控制器:

public function addAction()
{

    $objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');

    $form = new CreateEventForm($objectManager);

    $event = new Event();
    $form->bind($event);

    if ($this->getRequest()->isPost())
    {
        // Merge the files 
        $post = array_merge_recursive(
                $this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray()
        );

        $form->setData($post);

        if ($form->isValid())
        {

            return $this->redirectToSuccessPage($form->getData());
        }


    return new ViewModel(array(
        'event' => $event,
        'form' => $form
    ));
}
InputFilter文件筛选器部分:

private function addFile()
{
    $name = '/event';

    $path = APPLICATION_PATH . '/../data/upload/';
    $target = realpath($path) . $name;

    // File Input
    $input = new FileInput('image');
    $input->setRequired(TRUE);
    $input->setAllowEmpty(FALSE);

    // Filters
    $renameUpload = new RenameUpload($target);
    $renameUpload->setOverwrite(FALSE);
    $renameUpload->setUseUploadExtension(TRUE);
    $renameUpload->setUseUploadName(TRUE);
    $renameUpload->setRandomize(TRUE);

    // File Input
    $input->getFilterChain()->attach($renameUpload);

    //Validators

    $this->add($input);

    return $this;
}
在成功页面的转储中,我看到:

文件上传成功

    object(Entities\Event)[323]
      private 'id' => null
      private 'title' => string 'Event10' (length=7)
      private 'eventinfo' => string 'Event 10' (length=8)
      private 'image' => 
      array (size=1)
        0 => 
         array (size=5)
          'name' => string 'test.jpg' (length=38)
          'type' => string 'image/jpeg' (length=10)
          'tmp_name' => string '/tmp/phpjWIZWS' (length=14)
          'error' => int 0
          'size' => int 257860
           private 'eventdate' => 
            object(DateTime)[324]
            public 'date' => string '2015-04-11 00:00:00' (length=19)
            public 'timezone_type' => int 3
            public 'timezone' => string 'Europe/Berlin' (length=13)
            private 'webshop' => null
--编辑-- 如果你在正确的轨道上,我的输入过滤器从未被调用。现在它似乎被调用了,但我返回到表单,它生成消息No Files Selected

有什么建议吗

我有两个问题:

  • 根据所有示例,现在应该保存文件,但如果我查看my/data/upload,则没有文件。有什么不对劲吗
  • 保存文件后,如何获得完整的文件名以存储在数据库中(我已将重命名过滤器设置为随机化),在什么情况下可用

  • 何时何地运行
    FileInput
    过滤器和验证器?我在这里看不到…嗨,威尔特,请看我的编辑。