繁体   English   中英

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

[英]How to upload files using ajax in 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];

使用FormData进行Ajax上传

var formdata = new FormData($('form[name="data_popup"]')[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函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM