2009-03-20 27 views
5

Zend Framework 1.7.4を使用してファイルをアップロードしようとしましたが、成功しませんでした。私はAkrabat's tutorialを読んだことがありましたが、それは私のプロジェクトでこれらのテクニックを使用したときにはうまく機能しませんでした。zend framework 1.7.4を使用したファイルアップロード

+0

正確には動作しない情報/コード/エラーメッセージを追加してください。 – Karsten

答えて

24

投稿したリンクは一般的な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

は「multipart/form-data」にフォームのenctype属性を設定することを忘れないでください。あなたはZend_Formのを使用している場合、またZend_Form::setDestinationは廃止されることに注意してください

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

を呼び出して、そのためにリネームフィルタを使用します。

// Deprecated: 
// $upload->setDestination('/tmp'); 
// New method: 
$upload->addFilter('Rename', '/tmp'); 
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); 

あなたは任意の宛先の例を設定することができ $フォト> setLabel ( 'Photo:') - > setDestination(APPLICATION_PATH。 "/../ data");

関連する問題