如何在Zend1中获取上传的文件信息

时间:2016-06-30 12:23:43

标签: php file zend-framework zend-form

我是zend的新手,我正在尝试上传CSV文件并获取其内容。 我的表单类是

<?php

class Application_Form_Upload extends Zend_Form
{
    public function init()
    {
        // Set the method for the display form to POST
        $this->setMethod('post')->setEnctype('multipart/form-data');

        // Add an email element
        $this->addElement('text', 'email', array(
            'label'      => 'Your email address:',
            'required'   => true,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'EmailAddress',
            )
        ));

        // Add the comment element
        $this->addElement('file', 'csvfile', array(
            'label'      => 'CSV File:',
            'required'   => true
        ));


        // Add the submit button
        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Send Request',
        ));

        // And finally add some CSRF protection
        $this->addElement('hash', 'csrf', array(
            'ignore' => true,
        ));
    }
}

我的控制器

class IndexController extends Zend_Controller_Action {

    public function indexAction() {
        $this->view->headTitle('WestWing');

        $request = $this->getRequest();
        $form = new Application_Form_Upload();

        if ($this->getRequest()->isPost()) {
            if ($form->isValid($request->getPost())) {
                $formData = new Application_Form_Upload($form->getValues());
                echo "<pre>";
                print_r($formData);
                $fileName = $formData->file->tmp_name;
                echo $fileName;

            }
        } else {
            echo "anot well";
        }

        $this->view->form = $form;
    }

}

但是当我做echo $filename时,它什么也没有给我回报。

2 个答案:

答案 0 :(得分:0)

您不需要创建另一个表单($ formData),您已经拥有$ form。

答案 1 :(得分:0)

你不必使用任何zend库来导入csv文件,你可以只使用本机的php函数,看看fgetcsv

$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
相关问题