ранее я создал форму с несколькими загрузками файлов, она работает Хорошо, но теперь меня попросили добавить третью загрузку файла, поле для этой третьей загрузки появляется динамически как результат определенной опции в элементе, существующем в 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, не должен приниматься в качестве третьей загрузки,
(На самом деле половина) Решено! при загрузке файлов суперглобальный файл $ _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