【问题标题】:How to upload files using ajax in Codeigniter?如何在 Codeigniter 中使用 ajax 上传文件?
【发布时间】:2016-04-21 10:45:27
【问题描述】:

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

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

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

在代码中我做了什么:

在 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];

【问题讨论】:

  • 表单名称name="builder_popup"不是data_popup
  • 是的,我已经这样做了,但没有新的事情发生
  • 您可以使用$("#formID").ajaxsubmit 而不是$.ajax 它会一次发布整个表单,需要form.js 文件

标签: javascript php jquery ajax codeigniter


【解决方案1】:

使用 FormData 进行 ajax 上传

var formdata = new FormData($('form[name="data_popup"]')[0]);

【讨论】:

    【解决方案2】:

    这应该适合你。

    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 函数。

    【讨论】:

    • 控制台说文件是未定义的,var mts = $('#userfile').get(0).files[0];
    • 你修改了HTML部分吗?我添加了一个名为 userfile 的 ID。
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多