如何在CodeIgniter中使用插入批处理多文件上传?

时间:2018-09-23 07:01:45

标签: php codeigniter-3 multifile-uploader

这就是问题所在,我正在尝试在CodeIgniter中上传多文件,但我也想将其也发送到数据库中的两个表中。

AI = "auto_increment";

ci_posts: post_id(AI), post_image.

ci_relationship: id(AI), post_id.

因此,基本上,对于上传到ci_posts表的每个图像,它们也都应提交到ci_relationship表。

这是我的控制人:

public function newphoto($id){
   // Check Login
     if(!$this->session->userdata('user_id')){
        // Redirect to page
        redirect('users/login');
    }

    // Field Rules
    $this->form_validation->set_rules('title', 'Title', 'trim');

    if ($this->form_validation->run() == FALSE) {

        // Set error message
        $this->session->set_flashdata('error', 'You must select one or more images');

        // Redirect
        redirect('users/album/'.$id.'/'.$this->session->userdata('username'));

    } else {

        // Multiple File Upload
        $data = array();
        if($this->input->post('mysubmit') && !empty($_FILES['post_image']['name'])){
            $filesCount = count($_FILES['post_image']['name']);
            for($i = 0; $i < $filesCount; $i++){

                $file_name = 'post_image[]';

                $_FILES[$file_name]['name'] = $_FILES['post_image']['name'][$i];
                $_FILES[$file_name]['type'] = $_FILES['post_image']['type'][$i];
                $_FILES[$file_name]['tmp_name'] = $_FILES['post_image']['tmp_name'][$i];
                $_FILES[$file_name]['error'] = $_FILES['post_image']['error'][$i];
                $_FILES[$file_name]['size'] = $_FILES['post_image']['size'][$i];

                // Create user folder
                $folder = $this->session->userdata('username');

                // Upload Status Image
                $config['upload_path'] = 'assets/img/users/media/'.$folder.'/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg';
                $config['max_size'] = 0;
                $config['encrypt_name'] = TRUE;
                $config['remove_spaces'] = TRUE;
                $config['detect_mime'] = TRUE;
                $config['mod_mime_fix'] = TRUE;

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

                // If username folder does not exist, create it
                if(!is_dir($config['upload_path'])) {
                    mkdir($config['upload_path'], 0777, TRUE);
                }

                // If files selected send them to ci_posts
                if($this->upload->do_upload($file_name)){

                    $fileData = $this->upload->data('file_name');
                    $upload_data[$i]['post_image'] = $fileData;

                    $this->db->insert_batch('ci_posts', $data);

                }

                // Get last post id for relationship data
                $post_id = $this->db->insert_id();

                // Relationship Array
                $data[$i] = array(
                    'parent_id'   => $id,
                    'post_id'     => $post_id,
                    'user_id'     => $this->session->userdata('user_id'),
                    'status'      => 'published',
                    'type'        => 'user_media',
                );

                // Insert relationship
                $this->db->insert_batch('ci_relationship', $data);

                // Set Message
                $this->session->set_flashdata('success', 'Photo has been added');

                // Redirect
                redirect('users/album/'.$id.'/'.$this->session->userdata('username'));

            }
        }
    }
}

这是我的观点:

            <?= form_open_multipart('users/newphoto/'.$album->post_id, $attributes, $hidden); ?>
                <!-- <div id="extraInputsContainer"></div> -->
                <div class="input-group">
                    <label class="input-group-btn">
                        <span class="btn btn-warning">
                            Browse 
                            <?php $data = array(
                                    'id'    =>  'post_image',
                                    'name'  =>  'post_image[]',
                                    'class' =>  'form-control',
                                    'value' =>  set_value('post_image'),
                                    'style' =>  'display:none',
                                ); ?>
                                <?= form_upload($data, '', 'multiple'); ?>
                        </span>
                    </label>
                    <input type="text" class="form-control" readonly>
                </div>
                <?php 
                    $args = array(
                        'id'    =>  'mysubmit',
                        'name'  =>  'mysubmit',
                        'class' =>  'btn btn-warning btn-sm',
                    );
                    $value = html_escape('Submit');
                    $extra = array(
                        'onclick'   =>  '',
                    );
                ?>
                <?= form_submit($args, $value, $extra); ?>
            <?= form_close(); ?>

谢谢。

注意:每次我填写表格时,当前输出都是一张图像。

0 个答案:

没有答案