2

Zend Form でファイルをアップロードしようとしていますが、ファイルのアップロードが機能しません。

ここに私のフォームコードがあります:

public function __construct($options = null)
    {
        parent::__construct($options);
        $this->setName('modelupload');
        $this->setMethod('post');
        $this->setAction('/model/upload');
        $this->setAttrib('enctype', 'multipart/form-data');

        // ... other elements ... //

        $file = new Zend_Form_Element_File('file');
        $file
            ->setAttrib('title', 'Select a file to upload.')
            ->setAttrib('required',"")
            ->setRequired(true)
            ->addValidator('Count',false,1)
            ->addValidator('Size',false,104857600)
            ->setMaxFileSize(104857600)
            ->setValueDisabled(true)
            ->setDestination(APPLICATION_PATH . "/../data/models/temp/")
            ->setLabel('Select a file to upload.');

        $submit = new Zend_Form_Element_Submit('submit', array(  
            'label' => 'Upload'  
        ));
        $submit->removeDecorator('DtDdWrapper');

        $this->setDecorators( array( array('ViewScript',
        array('viewScript' => 'formViews/_form_upload_model.phtml'))));

        $this->addElements(array($name, $description, $file, $submit));
    }

そして、ここに私のコントローラコードがあります:

public function uploadAction()
{
    // action body
    error_reporting(E_ALL);
    $this->view->pageTitle = "Model Upload";

    $form = new Application_Model_FormModelUpload();

    if ($this->_request->isPost()) {
        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
            echo "<h1>Valid</h1>";

            $upload = new Zend_File_Transfer();
            $files  = $upload->getFileInfo();

            $form->getValues();

        } else {
            echo "<h1>Not Valid</h1>";
        }
        echo "<pre>";
        print_r($formData);
        echo "</pre>";
    }

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

そして、何かをアップロードしようとすると、次のようになります。

Not Valid
Array
(
    [name] => title
    [description] => description
    [MAX_FILE_SIZE] => 104857600
    [file] => filename.extension
    [submit] => Upload
)

つまり、フォームが検証に合格しておらず、その理由がわかりませんこれとは別に、ファイルアップロードされていません。私は非常に多くのことを試しましたが、今は機知に富んでいます。違いがあれば、ローカル環境で Zend サーバー CE を使用しています。

彼らが提供できる助けを前もって誰にでも感謝します!

編集:

以下の MIss poo のコードを試してみたところ、次のようになりました。

Array
(
)
Array
(
    [name] => Array
        (
        )

    [description] => Array
        (
        )

    [file] => Array
        (
        )

    [submit] => Array
        (
        )

)
Array
(
)

エラーはまったく返されません...

4

3 に答える 3

2

フォームから削除setMaxFileSize(104857600)したときにエラーが発生 [fileUploadErrorIniSize] => File 'image' exceeds the defined ini sizeしたため、php.ini構成を変更してこれをフォームに追加する必要がありましたenctype="multipart/form-data"

于 2014-07-08T12:54:21.890 に答える
0

Zend_File_Transfr_Adapte_Httpを試してください。例を次に示します。

    if ($this->_request->isPost()) {

        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
            echo "<h1>Valid</h1>";

            /* Uploading Document File on Server */
            $upload = new Zend_File_Transfer_Adapter_Http();
            $upload->setDestination(APPLICATION_PATH . "/../data/models/temp/");

            try {
                 // upload received file(s)
             $upload->receive();
            } catch (Zend_File_Transfer_Exception $e) {
             $e->getMessage();
            }

       } else {
            echo "<h1>Not Valid</h1>";
        }
        echo "<pre>";
        print_r($formData);
        echo "</pre>";
    }

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

.

于 2013-05-03T22:36:49.380 に答える