Upload file trong Cakephp 4

Trong bài viết này chúng ta sẽ thực hành upload file trong Cakephp 4. Trước khi bắt tay vào thực hành bạn cần tham khảo qua bài viết Đọc, thêm, sửa, xóa trong Cakephp 4.

Bước 1: Tại config/route.php thêm

use Cake\Http\Middleware\CsrfProtectionMiddleware;

$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
$builder->applyMiddleware('csrf');
$builder->connect('/upload', ['controller' => 'Articles', 'action' => 'upload']);

Bước 2: Tại ArticlesController.php thêm

use Cake\View\Helper\FormHelper;

upload-cakephp4

Và hàm upload()

public function upload(){
         if ($this->request->is('post')) {
            $fileobject = $this->request->getData('submittedfile');
            $uploadPath = '../uploads/';
            $destination = $uploadPath.$fileobject->getClientFilename();
            $fileobject->moveTo($destination);
         }
    }

Bước 3: Thêm tập tin upload.php trong templates/Articles

<?php
   echo $this->Form->create(NULL, ['type' => 'file']);
   echo $this->Form->file('submittedfile');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
   $uploadPath ='../uploads/';
   $files = scandir($uploadPath, 0);
   echo "Tập tin đã upload thành công:<br/>";
   for($i = 2; $i < count($files); $i++)
      echo "File is - ".$files[$i]."<br>";
?>

Bước 4: Tạo thư mục uploads trong thư mục gốc tại http://localhost/cakephp

Cuối cùng truy cập vào URL http://localhost/cakephp/admin/upload để tiến hành upload.

upload-cakephp41