2016-07-13 16 views
6

Sto usando il cakephp-upload plugin e sono riuscito a caricare immagini sul server:Le immagini non vengono salvate nella cartella photo_dir utilizzando plugin di CakePHP-upload su CakePHP 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']); 

Ora le immagini avatar vengono caricati, ma la non vengono inseriti nella sottodirectory photo_dir.

enter image description here

Che cosa mi manca? Funziona senza problemi nella mia applicazione CakePHP 2.8.x.

+0

il photo_dir esiste effettivamente sul server? – Wolfeh

+0

'photo_dir' è una colonna nella tabella worker. – doonot

risposta

1

Autore del plugin qui.

L'attributo fields.dir non indica quale dovrebbe essere la sottodirectory. È un riferimento alla colonna nella tabella del database in cui dovremmo salvare lo director dove abbiamo salvato il file.

Se si desidera modificare il luogo in cui si salvano i file su disco, si dovrebbe invece utilizzare l'opzione path. Ecco un esempio in cui io uso il photo_dir sottodirectory:

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

Il valore predefinito per l'opzione path è webroot{DS}files{DS}{model}{DS}{field}{DS}.

1

non dovrebbe essere:

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

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

No, photo_dir è una colonna nella tabella worker. – doonot

1

Se si desidera utilizzare l'opzione meglio di voi può utilizzare sotto plugin che ha una migliore opzione per il caricamento del file piuttosto che Josegonzalez/Upload.Upload plugin.

Ho usato sotto uno nel mio progetto.

Utils Plugin for Cake 3.x 

link per questo plugin: https://github.com/cakemanager/cakephp-utils

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

E questa è la configurazione:

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

Qui è possibile personalizzarla. Fammi sapere se hai qualche domanda in merito.

+0

Hai provato questa soluzione? –

Problemi correlati