2009-08-17 7 views
3

Ich habe das eine Weile untersucht und kann es nicht herausfinden. Grundsätzlich habe ich eine Seite für mein Modell hinzufügen, die Sie eine Karte von einer URL oder von einem Datei-Upload hinzufügen können. Ich habe alle Felder und Validierung in, aber wie und wo verwalte ich die hochgeladene Datei ?? Es muss einen einfachen Weg geben, dies zu tun. Vielen Dank!Wie funktioniert der formularbasierte Upload von Dateien in CakePHP?

Antwort

19

Zunächst muss Ihr Formular eingerichtet werden, um Datei-Uploads zu ermöglichen.

<?php echo $form->create(Model, array('type' => 'file')); ?> 

Dies wird alle Datei-Eingänge können tatsächlich die Datei auf dem Server mit $form->file(field) oder $form->input(field, array('type' => 'file')) hochladen.

Sobald die Datei hochgeladen wurde, können Sie alles andere aus dem Modell verfahren soll:

function beforeSave($created) { 
    extract($this->data[Model][field]); 
    if ($size && !$error) { 
     move_uploaded_file($tmp_name, destination); 
     $this->data[Model][field] = destination; 
    } 
    return true; 
} 

Dies sind nur die Grundlagen, so sicher sein, um ein Spiel zu haben, die Lösung zu finden, die am besten Ihren Bedürfnissen entspricht .

+0

, dass Funktionsname sollte "move_uploaded_file" lesen :) – inkedmn

+0

Ah danke, es wurde aktualisiert. Das Textfeld überprüft nicht meine Syntax. ;) –

+0

So habe ich die Funktion move_uploaded_file gemacht: move_uploaded_file ($ _DATEIEN ['data'] ['tmp_name'] ['Item'] ['ipath'], "$ destination /".$_ FILES ['data'] ['name'] ['Gegenstand'] ['ipath']); –

0

HINWEIS: MeioUploadBehavior ist veraltet. Stattdessen schlägt jrbasso die Upload Plugin vor.

Zusätzlich zu den bereits gegebenen feinen Antworten möchte ich einen Hinweis auf MeioUploadBehavior geben, der zur Zeit von jrbasso at github gepflegt wird, was eine große Hilfe für mich in meinem eigenen CakePHP-Projekt war.

Sie fügen einfach das Verhalten zu Ihrem Modell hinzu, indem Sie das Feld $actsAs verwenden und gleichzeitig alle benutzerdefinierten Einstellungen angeben. Erstellen Sie dann in Ihrer Datenbank die erforderlichen Felder (beschrieben durch die bereitgestellten Dokumente) oder konfigurieren Sie das Modell so, dass keine Datenbanktabelle verwendet wird. Schließlich erstellen Sie das Formular in Ihrer Add-Seite, auch in der mitgelieferten Dokumentation beschrieben. Das Verhalten kümmert sich dann um den Rest für Sie.

0

Sie können Zend Components verwenden, um den Datei-Upload zu verarbeiten. Es gibt ein gutes Beispiel hier auf meiner Website:

+0

Hallo Geo. Ich habe einen Kommentar zu Ihrem Blog-Artikel abgegeben. Bitte erwähnen Sie die Version von CakePHP, die Sie in Ihrem Beispiel verwendet haben. Vielen Dank. –

Verwandte Themen