Загрузка файла с использованием Zend Framework 1.7.4 - PullRequest
5 голосов
/ 20 марта 2009

Я пытаюсь загрузить файл с помощью Zend Framework 1.7.4, но безуспешно. Я прочитал учебник Akrabat , который был полезен, но когда я использовал эти методы в своем проекте, я не смог заставить его работать.

Ответы [ 3 ]

25 голосов
/ 26 апреля 2009

Ссылка, которую вы разместили, является просто общим руководством по Zend Framework и не обновлялась после ZF 1.5.

В любом случае, как только вы начнете работать с Zend, это пример кода, который вы будете использовать для получения загрузки. Форма, выполняющая публикацию, должна содержать правильные компоненты для загрузки файла.

//validate file
//for example, this checks there is exactly 1 file, it is a jpeg and is less than 512KB
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addValidator('Count', false, array('min' =>1, 'max' => 1))
       ->addValidator('IsImage', false, 'jpeg')
       ->addValidator('Size', false, array('max' => '512kB'))
       ->setDestination('/tmp');

if (!$upload->isValid()) 
{
    throw new Exception('Bad image data: '.implode(',', $upload->getMessages()));
}

try {
        $upload->receive();
} 
catch (Zend_File_Transfer_Exception $e) 
{
        throw new Exception('Bad image data: '.$e->getMessage());
}

//then process your file, it's path is found by calling $upload->getFilename()
8 голосов
/ 08 июля 2009

Не забудьте установить атрибут enctype формы на "multipart/form-data". Если вы используете Zend_Form, звоните

$form->setAttrib('enctype', 'multipart/form-data');

Также обратите внимание, что Zend_Form::setDestination устарело, используйте для этого фильтр переименования:

// Deprecated:
// $upload->setDestination('/tmp');
// New method:
$upload->addFilter('Rename', '/tmp');
0 голосов
/ 31 октября 2012
    $this->setAction('/sandbox/example/form')->setEnctype('multipart/form-data')->setMethod('post');

    $photo = new Zend_Form_Element_File('photo');
    $photo->setLabel('Photo:')->setDestination(APPLICATION_PATH ."/../public/tmp/upload");

    $this->addElement($photo);

Вы можете установить любой пример назначения $ photo-> setLabel ('Photo:') -> setDestination (APPLICATION_PATH. "/../ data");

...