2009-03-20 3 views
5

Ich versuche, eine Datei mit Zend Framework 1.7.4 hochladen, waren aber nicht erfolgreich. Ich habe Akrabat's tutorial gelesen, das war hilfreich, aber als ich diese Techniken in meinem Projekt verwendete, war ich nicht in der Lage, es zur Arbeit zu bringen.Datei-Upload mit Zend-Framework 1.7.4

+0

fügen Sie bitte weitere Informationen/code/errormessages was genau nicht funktioniert. – Karsten

Antwort

24

Der von Ihnen gepostete Link ist nur ein allgemeines Zend Framework-Tutorial und wurde nicht über ZF 1.5 hinaus aktualisiert.

Wie auch immer, sobald Sie mit Zend beginnen, ist dies ein Beispiel für den Code, den Sie verwenden würden, um einen Upload zu erhalten. Das Formular, das die Buchung durchführt, muss über die richtigen Komponenten zum Hochladen von Dateien verfügen.

//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

Vergessen Sie nicht, das enctype Attribut des Formulars auf „multipart/form-data“. Wenn man Zend_Form verwendet, rufen

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

Beachten Sie auch, dass Zend_Form::setDestination ist veraltet, verwenden Sie die Umbenennungsfilter für das:

// 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); 

können Sie legen jedes Ziel Beispiel $ Photo-> setLabel ('Foto:') -> setDestination (APPLICATION_PATH. "/../ data");