5

Zend Framework 1.7.4を使用してファイルをアップロードしようとしていますが、成功しませんでした。Akrabatのチュートリアルを読みましたが、これは役に立ちましたが、プロジェクトでこれらの手法を使用したときに、それを機能させることができませんでした。

4

3 に答える 3

25

あなたが投稿したリンクは、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()
于 2009-04-26T14:20:38.340 に答える
8

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');
于 2009-07-08T19:06:52.530 に答える
0
    $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");

于 2012-10-31T10:02:45.130 に答える