Ошибка Dropzone в Codeigniter3

Я использую Dropzone в своем проекте CI. Однако я не могу управлять им, и мои файлы не загружаются. Он даже не передает имя изображения в переменную, так как при вставке базы данных дает NULL.

Ошибка Dropzone в Codeigniter3

Вот мой взгляд:

<div id = "dropzone" class = "dropzone"></div>

<script type = "text/javascript">
  Dropzone.autoDiscover = false;
  var base_url = "<?php echo base_url();?>";
  $("div#dropzone").dropzone({ 
    url: base_url + 'cars/addpic',
    addRemoveLinks: true,
    uploadMultiple: true,
    paramName: "files",
    acceptedFiles: "image/*",
    dictDefaultMessage: "<span class='mif-file-upload mif-3x'></span> <br>Faykkari sechin gorek"
  });

</script>

Вот мой контроллер:

public function addpic() {
    $config['upload_path']   = './assets/img/cars/';
    $config['allowed_types'] = 'jpg|png|jpeg|JPG|PNG|JPEG';
    $config['overwrite']     = FALSE;
    $config['remove_spaces'] = TRUE;
    $config['max_size'] = '25000';

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

    if ($this->upload->do_upload('files'))
    {
        //for multiple
        $filesCount = count($_FILES['files']['name']);
        for($i = 0; $i < $filesCount; $i++){
            $_FILES['filee']['name'] = $_FILES['files']['name'][$i];
            $_FILES['filee']['type'] = $_FILES['files']['type'][$i];
            $_FILES['filee']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
            $_FILES['filee']['error'] = $_FILES['files']['error'][$i];
            $_FILES['filee']['size'] = $_FILES['files']['size'][$i];



            if (!$this->upload->do_upload('filee')){
                $manyimages = '';
            } else {
                $fileData = $this->upload->data();
                $manyimages[] = $fileData['file_name'];
            }
        } 

        $manymanyimages= implode(',', $manyimages);
    }

а затем я передаю эти данные в основную функцию, где все данные загружаются в базу данных.

public function create($manymanyimages) {

    //some other stuff here

    $data = array(             
        'photos' => $manymanyimages
    );

    $this->cars_model->add_car($data);
    redirect('');
}

Совет: вы используете инициализацию $ config дважды $this->upload->initialize($config);. Необходимо использовать только $this->load->library('upload', $config);.

Mr. ED 07.04.2018 23:05

Я также никогда не видел do_upload(), вложенного в do_upload() - я не верю, что это сработает - и не назначал массив $ _FILES

Alex 07.04.2018 23:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
303
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте этот код; Я думаю, что ваша основная проблема заключалась во вложенном do_upload() и неправильной обработке ошибок dz.

    $config['upload_path'] = './assets/img/cars/';
    $config['allowed_types'] = 'jpg|png|jpeg|JPG|PNG|JPEG';
    $config['overwrite'] = FALSE;
    $config['remove_spaces'] = TRUE;
    $config['max_size'] = '25000';
    $this->load->library('upload', $config);
    $manyimages = array();
    $filesCount = count($_FILES['files']['name']);
    for ($i = 0; $i < $filesCount; $i++) {
        $_FILES['filee']['name'] = $_FILES['files']['name'][$i];
        $_FILES['filee']['type'] = $_FILES['files']['type'][$i];
        $_FILES['filee']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
        $_FILES['filee']['error'] = $_FILES['files']['error'][$i];
        $_FILES['filee']['size'] = $_FILES['files']['size'][$i];
        if (!$this->upload->do_upload('filee')) {
            $this->output->set_status_header(500);
            $this->output->set_output(strip_tags($this->upload->display_errors()));
        } else {
            $fileData = $this->upload->data();
            $manyimages[] = $fileData['file_name'];
        }
    }
    $manymanyimages = implode(',', $manyimages);
    echo $manymanyimages;

Теперь он работает для отправки фотографий, но по-прежнему не передает имена другой функции :(

Javid Abbasov 08.04.2018 17:43

ну, вы никогда не включали это в свой код ... мой код и ваш код заканчиваются в одной точке ... поэтому я не уверен, как вы хотите, чтобы я это понял.

Alex 08.04.2018 22:04

На самом деле изображения загружаются в папку ./assets/img/cars/. Однако я не могу получить $ manymanyimages из другой функции.

Javid Abbasov 08.04.2018 22:26

еще раз: вы получаете ваши изображения эхом через echo $manymanyimages; ??

Alex 09.04.2018 00:22

важно видеть, что мы получаем там правильный результат

Alex 09.04.2018 00:27

ты имеешь ввиду имена?

Javid Abbasov 09.04.2018 05:31

да, это эхо, как вы ожидаете? что такое var_dump этой переменной в функции addpic ()

Alex 09.04.2018 05:56
$manymanyimages = implode(',', $manyimages); echo $manymanyimages; перекликается с чем-то, что вам просто нужно знать, где искать. например панель сети и щелкните запрос ajax, а затем найдите кнопку предварительного просмотра ... это действительно базовые вещи
Alex 09.04.2018 06:51

Я сделал это, и это перекликается с именами файлов. mega.nz/#!e1ZDmQgC!XLxonlGzWAWwH0GqWO1WR_EoqSopAQ7Ll7FgsLgDT‌ 9M вот скриншот

Javid Abbasov 09.04.2018 10:57

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

Alex 09.04.2018 21:16

Другие вопросы по теме