Загрузка нескольких файлов на каждый вход с использованием CodeIgniter и Ajax с использованием FormData и добавление некоторого идентификатора ввода с файлами в formdata

#php #jquery #ajax #codeigniter #upload

#php #jquery #ajax #codeigniter #загрузка

Вопрос:

Я хочу загружать файлы, используя несколько входных файлов…Ниже приведен некоторый HTML-код…

 <input id="image_1" type="file" name="images[]" class="file_input" multiple />
<input id="image_2" type="file" name="images[]" class="file_input" multiple />
 

И здесь я написал цикл jquery для каждого ввода:

 $(document).ready(function(){
    $('#save').on('click', function(){
        var fileInputs = $('.file_input');
        var formData = new FormData();
        $.each(fileInputs, function(i,fileInput){
            if( fileInput.files.length > 0 ){
                $.each(fileInput.files, function(k,file){
                    formData.append('images[]', file);
                });
            }
        });
        $.ajax({
            method: 'post',
            url:"/multi_uploader/process",
            data: formData,
            dataType: 'json',
            contentType: false,
            processData: false,
            success: function(response){
                console.log(response);
            }
        });
    });
});
 

Для загрузки изображений есть моя функция контроллера

 function upload_images(){
    $admin_setting  = $this->data;
    
    $config['upload_path']      = $admin_setting['upload_IMG_path'];
    $config['allowed_types']    = 'jpg|png|gif|jpeg';
    $config['max_size']         = '8192';
    $config['encrypt_name']     = TRUE;
    
    $this->load->library('upload', $config);
    $this->upload->initialize($config);
    
    for($count = 0; $count<count($_FILES["myfile"]["name"]); $count  ){
        $_FILES["file"]["name"]     = $_FILES["myfile"]["name"][$count];
        $_FILES["file"]["type"]     = $_FILES["myfile"]["type"][$count];
        $_FILES["file"]["tmp_name"] = $_FILES["myfile"]["tmp_name"][$count];
        $_FILES["file"]["error"]    = $_FILES["myfile"]["error"][$count];
        $_FILES["file"]["size"]     = $_FILES["myfile"]["size"][$count];
        
        if($this->upload->do_upload('file')){
            $data = $this->upload->data();

            $response[] = $data;
        }
    }
}
 

Я ожидаю такого результата..

 $array = array(
        array(
            'filename' => '765c3989a0735de1fa51572231b1fa0c.png',
            'inputid'  => 'image_1',
        ),
        array(
            'filename' => '58abd40a3bbe187e5a79c48295021bcd.png',
            'inputid'  => 'image_2',
        )
);
 

Могу ли я каким-либо образом получить этот результат.Я хочу, чтобы этот результат был таким, потому что мне нужно ввести новые имена файла через уникальные идентификаторы каждого поля ввода в другой ввод текстового типа..

Комментарии:

1. Вы не можете получить информацию, которая не была отправлена на сервер в первую очередь. Вы добавили все эти поля под именем параметра images[] , и информация, которая идентифицирует поле ввода, из которого они пришли, в настоящее время вообще не отправляется на сервер.

2. Да .. я знаю, что это не отправлено .. и я не знаю, как отправить их, пожалуйста, помогите..

3. Ну, либо добавьте их под другим именем параметра (но тогда связывание загруженного файла с идентификатором может усложниться), либо передайте эту информацию в имени параметра, под которым вы уже загружаете эти файлы (но вам, возможно, придется изменить логику на стороне сервера, которая обрабатывает эти загрузки несколько раз).бит.)

4. @Dinesh Sahu привет, ты хочешь 2 , чтобы входной файл с множественным атрибутом вставлял изображение с помощью ajax с кнопкой отправки??

5. пожалуйста, покажите нам ваше требование с помощью изображения.