Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 使用Zend Framework上传文件不需要';我不能毫无差错地工作_Php_Zend Framework_File Upload - Fatal编程技术网

Php 使用Zend Framework上传文件不需要';我不能毫无差错地工作

Php 使用Zend Framework上传文件不需要';我不能毫无差错地工作,php,zend-framework,file-upload,Php,Zend Framework,File Upload,我对一个错误很生气,更像是没有错误,我不明白。 我正试图通过Zend_框架将一个文件上传到一个目录 以下是我的php: if (($this->_request->getPost('file_upload', false))) { if ($this->view->form->isValid($_POST)) { $data = $this->view->form->getValues();

我对一个错误很生气,更像是没有错误,我不明白。 我正试图通过Zend_框架将一个文件上传到一个目录

以下是我的php:

if (($this->_request->getPost('file_upload', false))) {
             if ($this->view->form->isValid($_POST)) {
                $data = $this->view->form->getValues();
                Zend_Debug::dump($data);
                if (!file_exists(APPLICATION_PATH .  "/../docs_client")) {
                    mkdir(APPLICATION_PATH . "/../docs_client");
                }
                if (!file_exists(APPLICATION_PATH . "/../docs_client/"  . $id . "/" . $data['annonce_id'])) {
                    mkdir(APPLICATION_PATH . "/../docs_client/" . $id . "/" . $data['annonce_id'], 0700, true);
                }
                $dirName = APPLICATION_PATH . "/../docs_client/" . $id . "/" . $data['annonce_id'] . '/';

                $adapter = new Zend_File_Transfer_Adapter_Http();   
                $adapter->setDestination($dirName);
                if ($data['accord'] != NULL) {
                    $accord = $adapter->getFileInfo('accord');
                    Zend_Debug::dump($accord);
                    $accordInfo = $accord['accord'];
                    $name = $accordInfo['name'];
                    $extension = pathinfo($accordInfo['name'], PATHINFO_EXTENSION);
                    $fname = "accord_bailleur_" . $id . "_" . $data['annonce_id'] . '_' . uniqid() . '.' . strtolower($extension);
                    $adapter->addFilter(new Zend_Filter_File_Rename(array(
                            'target' => $fname, 
                            'overwrite' => true
                            )), null, $accord);

                    if (!$adapter->receive($accord)){

                        //die ( print_r ( $adapter->getMessages (), 1 ) );
                    }
                    Zend_Debug::dump($fname);
                    //Zend_Debug::dump($accord);die();
                }

             }
        }
在zend表单中,我将valueDisabled设置为true。 在我的html表单中,我将enctype设置为“multipart/formdata”

当我试图上传我的文件时,如果目录丢失了,就会创建目录,除了我的文件没有上传之外,所有的事情都会像它应该做的那样。 我的临时目录或我设置的上传目录中没有任何内容。 当我试图显示错误时,我有一个空数组

下面是我的调试:

/* POST DATA */
array(4) {
  ["accord"] => string(36) "0b4f7b468ad649ccbe8d2c78d3f50389.pdf"
  ["loyer"] => NULL
  ["justificatif"] => NULL
  ["annonce_id"] => string(3) "337"
}

/* CONTENT OF $accord*/
array(1) {
  ["accord"] => array(11) {
    ["name"] => string(36) "0b4f7b468ad649ccbe8d2c78d3f50389.pdf"
    ["type"] => string(15) "application/pdf"
    ["tmp_name"] => string(27) "C:\Windows\Temp\phpE10B.tmp"
    ["error"] => int(0)
    ["size"] => string(7) "3258008"
    ["options"] => array(4) {
      ["ignoreNoFile"] => bool(false)
      ["useByteString"] => bool(true)
      ["magicFile"] => NULL
      ["detectInfos"] => bool(true)
    }
    ["validated"] => bool(false)
    ["received"] => bool(false)
    ["filtered"] => bool(false)
    ["validators"] => array(1) {
      [0] => string(25) "Zend_Validate_File_Upload"
    }
    ["destination"] => string(86) "C:\Program Files (x86)\Zend\Apache2\htdocs\esubletz1\application/../docs_client/17/337"
  }
}
/* CONTENT OF $fname*/
string(40) "accord_bailleur_17_337_5224634612c1d.pdf"
我有或多或少的另一个文件上传相同的代码,它工作得很好


我不明白为什么这一个没有。

在rob的文件上载上使用这个简单易行的示例,它将非常有用,并将为您提供在ZF中上载文件的正确方式和方法


好吧,经过这么长时间,错误就在这里

$adapter->addFilter(new Zend_Filter_File_Rename(array(
                            'target' => $fname, 
                            'overwrite' => true
                            )), null, $accord);

                    if (!$adapter->receive($accord)){

                        //die ( print_r ( $adapter->getMessages (), 1 ) );
                    }
$accord不应该是数组,而是该数组名称的字符串,在本例中为“accord”。 就像每次我在这里发布后发现错误一样