如何在Codeigniter中使用ajax上传文件?

时间:2016-04-21 10:45:28

标签: javascript php jquery ajax codeigniter

我有一个网格,在显示的数据列表中,每行都有一个编辑操作。

因此,当编辑按钮按下弹出窗口时,我会想要更新数据并上传有关此选定行的图像。

数据已成功更新,但图片未保存在文件夹中。

代码我做了什么:

在ajax中,我在表单提交时序列化所有数据,但上传文件发布数据没有显示,所以我这样做 -

var mts = $('#userfile').val();
    var formdata = $('form[name=data_popup]').serialize()+'&IMG_URI='+mts;
    console.log(formdata);

HTML代码:

<form action="#" method="post" enctype="multipart/form-data" name="data_popup">
 <input type="file" name="userfile">
</form>

Jquery代码:

function update_cat(){
    var mts = $('#userfile').val();
    var formdata = $('form[name=data_popup]').serialize()+'&IMG_URI='+mts;
    console.log(formdata);
        $.ajax({
            url: '<?=$this->config->base_url()?>admin_panel/update_data/',
            type: 'post',
            data: formdata
        }).done(function(data) {
      console.log(data);
        });
    }

Codeigniter型号代码:

$this->load->library('upload');
            $config['upload_path'] = "./application/assets/images/logo";
            $config['allowed_types'] = "gif|jpg|png|jpeg";
            $config['file_name'] = date('dmYHis');
            $this->upload->initialize($config);
            $this->load->library('upload', $config);
            $this->upload->do_upload('userfile');
            $data_upload_files = $this->upload->data();
            $image = $data_upload_files[file_name];

2 个答案:

答案 0 :(得分:0)

使用FormData进行ajax上传

$tocity=$_POST['tocity'];
$res=mysql_query("SELECT  Route FROM routes where $tocity IN('City1','City2','City3','City4','City5','City6','City7','City8','City9','City10')");
while($result=mysql_fetch_array($res)){
    echo $result['Route'];
}

答案 1 :(得分:0)

这应该适合你。

HTML

<form action="#" method="post" enctype="multipart/form-data" name="data_popup"> <input type="file" name="userfile" id="userfile"> </form>

JavaScript

function update_cat(){
    var formData = new FormData();

    var mts = $('#userfile').get(0).files[0];

    formData.append('userfile', mts);

        $.ajax({
            url: '<?=$this->config->base_url()?>admin_panel/update_data/',
            method: 'post',
            data: formdata,
            processData: false,
            cache: false,
            contentType: false
        }).done(function(data) {
            console.log(data);
        });
}


PHP

<?php

$this->load->library('upload');

$config['upload_path'] = "./application/assets/images/logo";
$config['allowed_types'] = "gif|jpg|png|jpeg";
$config['file_name'] = date('dmYHis');

$this->upload->initialize($config);

$this->upload->do_upload('userfile');

$data_upload_files = $this->upload->data();
$image = $data_upload_files['file_name'];

注意:我在PHP部分没有做太多工作,因为我没有完全理解你想要对文件做什么。

还要确保以某种方式调用javaScript函数。