Как вставить название нескольких изображений и переместить в папку, используя jquery ajax в codeigniter? - PullRequest
0 голосов
/ 02 января 2019

В моем коде у меня есть поле ввода <input type="file" id="product_image" name="product_image[]" multiple>, где я хочу вставить название нескольких изображений в мою базу данных, когда мы перемещаем изображения в папку.

Когда я использую var_dump($_FILES), он показывает мне array(1) { ["product_image"]=> array(5) { ["name"]=> array(1) { [0]=> string(9) "img3.jpeg" } ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } ["tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phpd6jSmA" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(40711) } } }

Вид:

<script>
    $(document).ready(function(){
        $("#submit").click(function(e){
            e.preventDefault();
            product_name = $("#product_name").val();
            quantity = $("#quantity").val();
            var formData = new FormData();
            $.each($("#product_image"), function (i, obj) {
                $.each(obj.files, function (j, file) {                    
                    formData.append('product_image[' + i + ']', file);
                });
            });
            formData.append('product_name', product_name);
            formData.append('quantity', quantity);
            $.ajax({
                type:"POST",
                data:formData,
                processData: false,
                contentType: false,
                url:"<?php echo base_url(); ?>admin/products",
                success:function(data){
                    $("#success_upload").html(data);
                }
            });
        });
    });
</script>

<input type="text" class="form-control" id="product_name" name="product_name">
<input type="text" class="form-control" id="quantity" name="quantity">
<input type="file" id="product_image" name="product_image[]" multiple>
<input type="submit" class="btn btn-primary" id="submit" name="submit">

Контроллер:

public function products()
{   
    $dataInfo = array();
    $files = $_FILES;
    $cpt = count($_FILES['product_image']['name']);
    for($i=0; $i<$cpt; $i++)
    {           
        $_FILES['product_image']['name']= $files['product_image']['name'][$i];
        $_FILES['product_image']['type']= $files['product_image']['type'][$i];
        $_FILES['product_image']['tmp_name']= $files['product_image']['tmp_name'][$i];
        $_FILES['product_image']['error']= $files['product_image']['error'][$i];
        $_FILES['product_image']['size']= $files['product_image']['size'][$i];    

        $this->upload->initialize($this->set_upload_options());
        $this->upload->do_upload('product_image');
        $dataInfo[] = $this->upload->data();
    }

    $data = array(
            'product_name' => $this->input->post('product_name'),
            'quantity' => $this->input->post('quantity'),
            'product_image' => implode(",",array_column($dataInfo, 'product_image')),
        );
    $sql = $this->db->insert('add_product',$data);
    if($sql == true)
    {
        echo '<p style="color:green;">New Product Added</p>';
    }
    else
    {
        echo '<p style="color:red;">Unable to Proceed!</p>';
    }
}

private function set_upload_options()
{   
    $config = array();
    $config['upload_path'] = ''.base_url().'resource/product/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = '1024';
    $config['overwrite']     = FALSE;
    return $config;
}

Теперь только product_name and quantity хранятся в базе данных, но я также хочу сохранить product_image в моей базе данных, которая разделена запятой (,) как img1.png,img2.png.Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 02 января 2019

Во-первых, проверьте, загружается ли изображение или нет.

При загрузке, затем нажмите имена изображений в массиве.

public function products()
{   
    $images_name = array();
    $files = $_FILES;
    $cpt = count($_FILES['product_image']['name']);
    for($i=0; $i<$cpt; $i++)
    {           
        $_FILES['product_image']['name']= $files['product_image']['name'][$i];
        $_FILES['product_image']['type']= $files['product_image']['type'][$i];
        $_FILES['product_image']['tmp_name']= $files['product_image']['tmp_name'][$i];
        $_FILES['product_image']['error']= $files['product_image']['error'][$i];
        $_FILES['product_image']['size']= $files['product_image']['size'][$i];    

        $this->upload->initialize($this->set_upload_options());
        if($this->upload->do_upload('product_image'))
        { 
            $dataInfo = $this->upload->data();
            array_push($images_name, $dataInfo['file_name']);
        }
    }

    $data = array(
            'product_name' => $this->input->post('product_name'),
            'quantity' => $this->input->post('quantity'),
            'product_image' => implode(",", $images_name)
        );
    $sql = $this->db->insert('add_product', $data);
    if($sql)
    {
        echo '<p style="color:green;">New Product Added</p>';
    }
    else
    {
        echo '<p style="color:red;">Unable to Proceed!</p>';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...