업로드 파일 작업 업그레이드

문서

변경된 사항

  • 파일 업로드 기능이 많이 변경되었습니다. 이제 파일이 오류 없이 업로드되었는지 확인할 수 있으며 파일 이동/저장이 더 간단해졌습니다.

업그레이드 가이드

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->validateData([], [
            '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);
    }
}