Специальная обработка для дополнительной загрузки третьего файла в Codeigniter

0

ранее я создал форму с несколькими загрузками файлов, она работает Хорошо, но теперь меня попросили добавить третью загрузку файла, поле для этой третьей загрузки появляется динамически как результат определенной опции в элементе, существующем в form, только для одного из его вариантов появляется 3-я загрузка, это нормально, но проблема в этом третьем файле заключается в том, что он должен быть CSV файлом, как я могу обрабатывать его тип, когда то, что у меня было (в контроллер формы) для двух других файлов:

if (isset($_POST['save'])){
            $this->load->library('upload');
            $this->upload->initialize(array(
                "upload_path" => "uploads/",
                "overwrite" => TRUE,
                "remove_spaces" => TRUE,
                "allowed_types" => "txt|pdf|gif|jpg|png|tiff|doc|docx|rtf|jpeg",
                "max_size" => 1024*2048,
                "max_width"=> 1024,
                "max_height"=> 768,
                "xss_clean" => FALSE
            )); 

            foreach($_FILES as $field => $file){
                if($file['error'] == 0){
                    if ($this->upload->do_upload($field)){
                        $data = $this->upload->data();
                        array_push($arreglo, $data['file_name']);
                        echo ($data['file_name']);
                    }else{
                        $errors = $this->upload->display_errors();
                    }
                }
            }                        
        }

и их соответствующие правила валидации; что в этом третьем файле отличается от того, что это файл CSV, когда два других являются графическими или обычными типами документов, и ни один другой тип, кроме CSV, не должен приниматься в качестве третьей загрузки,

Теги:
file
codeigniter
upload

1 ответ

0

(На самом деле половина) Решено! при загрузке файлов суперглобальный файл $ _FILES генерирует записи для каждого из этих файлов, даже если вы их не загружаете, поэтому, повторяя $field, я обнаружил, что могу использовать этот ключ для назначения типов файлов следующим образом:

foreach($_FILES as $field => $file){
         if($field != "file3"){
                $config["allowed_types"] = "txt|pdf|gif|jpg|png|tiff|doc|docx|rtf|jpeg";
         }else{
            $config["allowed_types"] = "csv";
         }
 }

Протестировав с помощью графического файла в качестве третьей загрузки, он просто не загружал! и если вы используете файл csv, он загружает без проблем: D

Post Edit: на самом деле половина решена, что для каждого переключателя тип файла, если есть 3-я загрузка, он переключается на тип csv, если нет, он сохраняет графический/обычный тип документа, любые идеи? thanx ia

Окончательное редактирование и решение: вам просто нужно загружать каждый файл один за другим и устанавливать одинаковый конфиг с разными правилами в каждом случае, если вы хотите прочитать об этом, я нашел его здесь, благодаря его автору! многократная загрузка файла с помощью нескольких конфигураций в codeigniter

Ещё вопросы

Сообщество Overcoder
Наверх
Меню