Как загрузить изображение в CodeIgniter?

В поле зрения

 <?php echo form_open_multipart('welcome/do_upload');?>
 <input type="file" name="userfile" size="20" />

В контроллере

function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $config['overwrite'] = TRUE;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;
    if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload('userfile')) {
        echo 'error';
    } else {

        return array('upload_data' => $this->upload->data());
    }
}

И я вызываю эту функцию следующим образом

 $this->data['data'] = $this->do_upload();

и просмотрите это изображение:

<ul>
<?php foreach ($data['upload_data'] as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>

Я не знаю, что это за ошибка.

Ответ 1

Похоже, проблема заключается в том, что вы отправляете запрос формы на welcome/do_upload и вызываете метод Welcome::do_upload() в другой с помощью $this->do_upload().

Следовательно, когда вы вызываете $this->do_upload(); внутри вашего второго метода, массив $_FILES будет пустым.

И поэтому var_dump($data['upload_data']); возвращает NULL.

Если вы хотите загрузить файл из welcome/second_method, отправьте запрос формы на welcome/second_method, где вы вызываете $this->do_upload();.

Затем измените вспомогательную функцию формы (внутри представления) следующим образом 1:

// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');

Загрузка файлов с помощью CodeIgniter

CodeIgniter очень хорошо документировал процесс загрузки, используя библиотеку загрузки файлов.

Вы можете посмотреть пример кода в руководстве пользователя; А также, чтобы лучше понять настройки загрузки, проверьте раздел "Элементы конфигурации" в конце страницы руководства.

Также есть несколько статей/примеров о загрузке файла в CodeIgniter, вы можете подумать:

Как примечание : Перед использованием кода примера CodeIgniter загрузите вспомогательные функции url и form:

// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');

<суб > 1. Форма должна быть "multipart" для загрузки файлов. Следовательно, вы должны использовать вспомогательную функцию form_open_multipart(), которая возвращает:
<form method="post" action="controller/method" enctype="multipart/form-data" /> Суб >

Ответ 2

Простая загрузка изображений в codeigniter

Ниже приведен код для удобной загрузки изображений

public function doupload()
     {
        $upload_path="https://localhost/project/profile"  
        $uid='10'; //creare seperate folder for each user 
        $upPath=upload_path."/".$uid;
        if(!file_exists($upPath)) 
        {
                   mkdir($upPath, 0777, true);
        }
        $config = array(
        'upload_path' => $upPath,
        'allowed_types' => "gif|jpg|png|jpeg",
        'overwrite' => TRUE,
        'max_size' => "2048000", 
        'max_height' => "768",
        'max_width' => "1024"
        );
        $this->load->library('upload', $config);
        if(!$this->upload->do_upload('userpic'))
        { 
            $data['imageError'] =  $this->upload->display_errors();

        }
        else
        {
            $imageDetailArray = $this->upload->data();
            $image =  $imageDetailArray['file_name'];
        }

     }

Надеюсь, это поможет вам загрузить изображение

Ответ 3

Измените код следующим образом. Он отлично работает:

public function uploadImageFile() //gallery insert
{ 
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $new_image_name = time() . str_replace(str_split(' ()\\/,:*?"<>|'), '', 
    $_FILES['image_file']['name']);
    $config['upload_path'] = 'uploads/gallery/'; 
    $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
    $config['file_name'] = $new_image_name;
    $config['max_size']  = '0';
    $config['max_width']  = '0';
    $config['max_height']  = '0';
    $config['$min_width'] = '0';
    $config['min_height'] = '0';
    $this->load->library('upload', $config);
    $upload = $this->upload->do_upload('image_file');
    $title=$this->input->post('title');
    $value=array('title'=>$title,'image_name'=>
    $new_image_name,'crop_name'=>$crop_image_name);}

Ответ 4

Загрузка файлов является важным процессом во многих веб-приложениях. Почти для каждого веб-сайта и веб-приложения требуется встроенный компонент загрузки файлов. Загрузка файлов и изображений в приложение, работающее на CodeIgniter, - это простой компонент, который заботится о процессе загрузки с небольшими проблемами.

Создать контроллер

Следующим шагом будет создание файла в папке контроллера. Назовите файл upload_controller.php. В этом файле я загружу библиотеку для инициализации класса Upload с помощью следующего кода:

$this->load->library('upload');

Я также установлю настройки для процесса загрузки файлов через функцию контроллера do_upload(). эта функция будет содержать следующий код:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

Для получения дополнительной информации, пожалуйста, посмотрите https://www.cloudways.com/blog/codeigniter-upload-file-image/

Ответ 5

//this is the code you have to use in you controller 

        $config['upload_path'] = './uploads/';  

// directory (http://localhost/codeigniter/index.php/your directory)

        $config['allowed_types'] = 'gif|jpg|png|jpeg';  
//Image type  

        $config['max_size'] = 0;    

 // I have chosen max size no limit 
        $new_name = time() . '-' . $_FILES["txt_file"]['name']; 

//Added time function in image name for no duplicate image 

        $config['file_name'] = $new_name;

//Stored the new name into $config['file_name']

        $this->load->library('upload', $config);

        if (!$this->upload->do_upload() && !empty($_FILES['txt_file']['name'])) {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('production/create_images', $error);
        } else {
            $upload_data = $this->upload->data();   
        }

Ответ 6

Просто попробовать это

Форма как это

<form method="post" enctype="multipart/form-data" action="<?=base_url();?>controller/ins_new_worker">
                
                    <input type='file' name="gov_id_img" accept="image/*" />
            <button type="submit" class="btn info">Submit</button> 
      </form>

Ответ 7

$image_folder = APPPATH . "../images/owner_profile/" . $_POST ['mob_no'] [0] . $na;
            if (isset ( $_FILES ['image'] ) && $_FILES ['image'] ['error'] == 0) {
                list ( $a, $b ) = explode ( '.', $_FILES ['image'] ['name'] );
                $b = end ( explode ( '.', $_FILES ['image'] ['name'] ) );
                $up = move_uploaded_file ( $_FILES ['image'] ['tmp_name'], $image_folder . "." . $b );
                $path = ($_POST ['mob_no'] [0] . $na . "." . $b);