アップロードされたファイルの操作のアップグレード
ドキュメント
変更点
ファイルアップロードの機能は大きく変更されました。エラーなくファイルがアップロードされたかどうかを確認できるようになり、ファイルの移動/保存が簡素化されました。
アップグレードガイド
CI4では、アップロードされたファイルに$file = $this->request->getFile('userfile')
でアクセスします。そこから$file->isValid()
でファイルが正常にアップロードされたかどうかを検証できます。ファイルを保存するには$path = $this->request->getFile('userfile')->store('head_img/', 'user_name.jpg');
を使用できます。これにより、ファイルは**writable/uploads/head_img/user_name.jpg**に保存されます。
ファイルアップロードコードを新しいメソッドに合わせて変更する必要があります。
コード例
CodeIgniterバージョン3.x
<?php
class Upload extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
public function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
public function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'png|jpg|gif';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->load->library('upload', $config);
if (! $this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
} else {
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
}
CodeIgniterバージョン4.x
<?php
namespace App\Controllers;
class Upload extends BaseController
{
public function index()
{
return view('upload_form', ['error' => ' ']);
}
public function do_upload()
{
$this->validate([
'userfile' => [
'uploaded[userfile]',
'max_size[userfile,100]',
'mime_in[userfile,image/png,image/jpg,image/gif]',
'ext_in[userfile,png,jpg,gif]',
'max_dims[userfile,1024,768]',
],
]);
$file = $this->request->getFile('userfile');
if (! $path = $file->store()) {
return view('upload_form', ['error' => 'upload failed']);
}
$data = ['upload_file_path' => $path];
return view('upload_success', $data);
}
}