Як завантажити зображення в 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();

і переглянути це зображення:

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

Я не знаю, що таке помилка.

14
якщо ви хочете прочитати підручник з поясненням завантаження файлу codeigniter докладно, ви можете знайти тут. programmerblog.net/codeigniter-file-upload-example
додано Автор Jason W, джерело
Напишіть <? PHP var_dump ($ data ['upload_data']); ?> на ваш погляд і перевірте результат. як примітка: НЕ ехо "помилка" в контролері при завантаженні не вдається.
додано Автор Hashem Qolami, джерело
Коли ви встановлюєте ./ uploads/ як папку для завантаження, воно повинне бути розташоване у кореневому місці вашої установки CodeIgniter (поблизу index.php ).
додано Автор Hashem Qolami, джерело
Здається, у вашому контролері є щось не так, будь ласка, розміщуйте додаткову інформацію.
додано Автор Hashem Qolami, джерело
Я маю на увазі, де ви використовували $ this-> data ['data'] = $ this-> do_upload (); , а не весь контролер, як ви надішліть $ this-> дані до вигляду?
додано Автор Hashem Qolami, джерело
@darshan Звичайно! просто додайте теги <input> , які вам потрібні, після form_open_multipart (); . значення будуть надіслані методом POST , який можна отримати за допомогою $ this-> input-> post ('field_name'); .
додано Автор Hashem Qolami, джерело
Я думаю, проблема полягає в тому, що ви надсилаєте запит на форму welcome/do_upload і викликаєте метод do_upload в іншому методі, тому $ _ FILES буде порожній на другий спосіб. Спробуйте надіслати запит на форму до другого методу, де ви називали $ this-> do_upload (); , наприклад: form_open_multipart ('welcome/SECOND_METHOD');
додано Автор Hashem Qolami, джерело
@darshan Я опублікую його як відповідь, будь ласка, відзначте це, як вирішивши вашу проблему.
додано Автор Hashem Qolami, джерело
замість echo "error" напишіть $ this-> upload-> display_errors (); die; щоб переглянути фактичну помилку, що повертається, і <? PHP var_dump ($ data ['upload_data']); ?> щоб переглянути результат
додано Автор Nil'z, джерело
Це дає мені нуль. Я хочу задати одне запитання, куди завантажується папка?
додано Автор darshan, джерело

<input type = "file" name = "userfile" size = "20" />

я використовував цей тег, і коли я закликаю var_dump ($ _POST, $ _GET, $ _FILES); зображення з'являється в методі $ _POST, я хочу завантажити цей файл, є якісь пропозиції?
додано Автор darshan, джерело
Я чувак, ти маєш рацію за вашу допомогу ...
додано Автор darshan, джерело
@HashemQolami Чи існує можливість завантаження даних та файлів у одну форму?
додано Автор darshan, джерело
Помилка не відображається порожня сторінка відкрита ... :(
додано Автор darshan, джерело
Для завантаження файлу мій код, як зазначено в ньому, немає жодного додаткового коду для завантаження файлів, я працюю над додатком системи управління студентами.
додано Автор darshan, джерело
Я помістив цю папку біля index.php, але все-таки він дає нульовий висновок.
додано Автор darshan, джерело

7 Відповіді

It seems the problem is you send the form request to welcome/do_upload, and call the Welcome::do_upload() method in another one by $this->do_upload().

Hence when you call the $this->do_upload(); within your second method, the $_FILES array would be empty.

І тому var_dump ($ data ['upload_data']); повертає NULL .

If you want to upload the file from welcome/second_method, send the form request to the welcome/second_method where you call $this->do_upload();.

Потім змініть функцію допоміжної форми (у межах Вид ) наступним чином 1 :

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

Завантаження файлів за допомогою CodeIgniter

CodeIgniter документує процес завантаження дуже ну, використовуючи бібліотеку завантаження файлів.

Ви можете ознайомитися з кодом зразка у посібнику користувача; А також, щоб краще зрозуміти, як завантажувати конфігурації , перейдіть до розділу Параметри елементів розкриття в кінці сторінки вручну.

Також є кілька статей/зразків щодо завантаження файлів у CodeIgniter, можливо, ви захочете розглянути:

Так само, як side-note: Переконайтеся, що ви завантажили допоміжні функції url і form перед використанням коду зразка CodeIgniter:

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

1. The form must be "multipart" type for file uploading. Hence you should use form_open_multipart() helper function which returns:
<form method="post" action="controller/method" enctype="multipart/form-data" />

13
додано
Ви можете вітати Хашем.
додано Автор Funk Forty Niner, джерело
Я наткнувся на це питання і питання з пошуку Google на інше питання. Ви можете оновити свою відповідь за допомогою наступного посилання codeigniter.com/userguide3/бібліотеки/& hellip; як ellislab.com/codeigniter/manual-guide/бібліотеки/& hellip; бібліотека застаріла.
додано Автор Funk Forty Niner, джерело
@ Фред-я- Дякую, Фред. Відповідь майже 3 роки тому :), і я не мав можливості повернутися до неї. Оновити відповідь за допомогою v3 ASAIC.
додано Автор Hashem Qolami, джерело
я знайшов цей підручник щодо цього cloudrows.com/blog/codeigniter-upload- файл-зображення
додано Автор Owais Alam, джерело

Simple Image upload in 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'];
        }

     }

Сподіваюся, це допоможе вам завантажити зображення

натисніть, щоб дізнатись більше

7
додано

Просто спробуйте це

Форма, як це

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

<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>
</div> </div>

Контролер, як це

$img = $_FILES;
            $config['upload_path'] = './assets/uploads/worker_id';
            $config['allowed_types'] = 'jpg|png';
            $config['file_name'] = $res;

            $this->load->library('upload', $config);
            if (!$this->upload->do_upload('set_img_name')) {
                $error = array('error' => $this->upload->display_errors());
                print_r($error);
            } else {
            $data = $this->upload->data();
            print_r($data);
        }
1
додано

Завантаження файлів є важливим процесом у багатьох веб-додатках. Майже кожен веб-сайт і веб-додаток потребують інтегрованого компонента завантаження файлів. Завантаження файлів і зображень у прикладну програму CodeIgniter - це простий компонент, який піклується про процес завантаження з невеликими проблемами.

Створення контролера

Наступним кроком є ​​створення файлу в папці контролера. Назвіть файл upload_controller.php. У цьому файлі я завантажу бібліотеку для ініціалізації класу завантаження за допомогою такого коду:

$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';

For further detail please have a look https://www.cloudways.com/blog/codeigniter-upload-file-image/

0
додано

Змініть код на зразок цього. Це чудово працює:

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);}
0
додано
//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();   
        }
0
додано
$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);
0
додано
Дивіться ... Спочатку створіть <form>, а потім додати тег для цього розділу, щоб ви могли завантажувати зображення. Потім введіть ім'я цього тегу зображення, тобто "зображення"
додано Автор Amol Jadhav, джерело
потім в контролері кодування, напишіть вказаний вище код
додано Автор Amol Jadhav, джерело
тому ваше зображення зберігатиметься в пертикальній папці, і тільки ім'я цього зображення зберігатиметься в таблицях бази даних
додано Автор Amol Jadhav, джерело
Будь ласка, опишіть свій код.
додано Автор Tim Visser, джерело