Wgranie pliku na serwer
$project= $this->fetchTable("Projects")->get($id); // zamiast loadModel
Config/paths
define('FILES_DIR', ROOT.DS.'files'.DS); // Katalog na Pliki define('MAX_FILESIZE', 20971520); // rozmian 20MB (30 MB = 31457280 B)
FilesController / add
public function add($model_name = '', $model_id = null, $category = "") { $file = $this->Files->newEmptyEntity(); $model = null; if($this->request->is('post')) { if($model_name && $model_id) { $model = $this->fetchTable($model_name)->get($model_id); if(!$model) { $this->Flash->error(__('Niepoprawny moduł.')); return $this->redirect($this->request->referer()); } } else { $this->Flash->error(__('Nie podano danych modułu.')); return $this->redirect($this->request->referer()); } $data = $this->request->getData('filename'); if($data->getError()) { $this->Flash->error(__('Nie można wgrać pliku: '. $data->getError())); return $this->redirect($this->request->referer(), ['name' => '_start']); } $filename = md5(uniqid('_', true)); // nazwa na dysku - wygenerowana losowa $filetypes = ['pdf', 'pdfx', 'doc', 'docx', 'txt', 'xls', 'xlsx', 'ppt', 'pptx', 'jpg', 'png', 'dwg', '7z', 'rar', 'zip' ]; $orygname = $data->getClientFileName(); $ext = substr(strtolower(strrchr($orygname, '.')), 1); $no_errors = true; if( $data->getSize() > MAX_FILESIZE) { $this->Flash->error(__('Zbyt duży plik. Max rozmiar: '. (MAX_FILESIZE / 1048576) .' MB')); // 20MB $no_errors = false; } if(! in_array($ext, $filetypes) ) { $this->Flash->error(__('Nieobsługiwany typ pliku. Zgłoś do administratora.')); $no_errors = false; } if( $no_errors ) { $path = FILES_DIR . $filename; $data->moveTo($path); $file->model_name = $model_name; $file->model_id = $model->id; $file->category = $category; $file->user_id = $this->user_id; $file->orygname = $orygname; $file->filename = $filename; $file->dir = $path; $file->ext = $ext; if ( $this->Files->save($file) ) { $this->Flash->success(__('Plik wgrany.')); return $this->redirect(['prefix' => false, 'controller' => $file->model_name, 'action' => 'view', $file->model_id]); } else { $this->Flash->success(__('Nie udało się zapisać danych pliku.')); unlink($path); } // save } // errors } // post return $this->redirect($this->request->referer()); } // add