2016-07-13 13 views
6

Ich bin der cakephp-upload plugin mit und ich schaffte es Bilder auf meinen Server hochladen:Bilder werden nicht in den photo_dir Ordner mit CakePHP-Upload-Plugin auf CakePHP gespeichert 3.2

WorkersTable:

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('workers'); 
    $this->displayField('id'); 
    $this->primaryKey('id'); 

    $this->addBehavior('Josegonzalez/Upload.Upload', [ 
     'avatar' => [ 
      'fields' => [ 
       'dir' => 'photo_dir' 
      ] 
     ] 
    ]); 
} 

view.ctp:

echo $this->Form->create($newWorker, ['type' => 'file']); 
echo $this->Form->input('avatar', ['type' => 'file']); 
echo $this->Form->input('photo_dir', ['type' => 'hidden']); 

Jetzt werden die Avatarbilder hochgeladen werden, aber die y werden nicht in das Unterverzeichnis photo_dir gestellt.

enter image description here

Was bin ich? Es funktioniert ohne Probleme in meiner CakePHP 2.8.x Anwendung.

+0

existiert das photo_dir tatsächlich auf dem Server? – Wolfeh

+0

'photo_dir' ist eine Spalte in der Worker-Tabelle. – doonot

Antwort

1

Autor des Plugins hier.

Das Attribut fields.dir gibt nicht an, was das Unterverzeichnis sein soll. Es ist ein Verweis auf die Spalte in Ihrer Datenbanktabelle, wo wir die director speichern sollten, wo wir die Datei gespeichert haben. Wenn Sie den Speicherort für Dateien auf der Festplatte ändern möchten, sollten Sie stattdessen die Option path verwenden. Hier ist ein Beispiel, wo ich verwende, um das photo_dir Unterverzeichnis:

$this->addBehavior('Josegonzalez/Upload.Upload', [ 
    'avatar' => [ 
     'path' => 'webroot{DS}files{DS}{model}{DS}{field}{DS}photo_dir{DS}' 
    ] 
]); 

Der Standardwert für die path Option ist webroot{DS}files{DS}{model}{DS}{field}{DS}.

1

Sollte es nicht sein:

$this->addBehavior('Josegonzalez/Upload.Upload', [ 
    'avatar' => [ 
     'fields' => [ 
      'dir' => 'avatar_dir' 
     ] 
    ] 
]); 

echo $this->Form->input('avatar_dir', ['type' => 'hidden']); 
+0

Nein, photo_dir ist eine Spalte in der Worker-Tabelle. – doonot

1

Wenn Sie möchten, eine bessere Option verwenden, als Sie unter Plugin verwenden können, die für den Upload bessere Option hat die Datei nicht Josegonzalez/Upload.Upload Plugin.

Ich habe unten in meinem Projekt verwendet.

Utils Plugin for Cake 3.x 

Link zu diesem Thema Plugin: https://github.com/cakemanager/cakephp-utils

Dokumentation: http://cakemanager.org/docs/utils/1.0/behaviors/uploadable/

Und dies ist die Konfiguration:

$this->addBehavior('Utils.Uploadable', [ 
      'image' => [ 
       'path' => '{ROOT}{DS}{WEBROOT}{DS}uploads{DS}{field}{DS}', 
       'fileName' => md5(rand(1000, 5000000)) . '.{extension}', 
       'removeFileOnDelete' => true, 
       'removeFileOnUpdate' => FALSE 
      ], 
     ]); 

Hier können Sie es anpassen. Lassen Sie es mich wissen, wenn Sie Fragen dazu haben.

+0

Haben Sie diese Lösung versucht? –