Php 使用ajax codeigniter上传文件时始终为空

Php 使用ajax codeigniter上传文件时始终为空,php,codeigniter,file-upload,jquery-file-upload,Php,Codeigniter,File Upload,Jquery File Upload,我在使用Ajax和Codeigniter上传文件时遇到问题。我已经读过base64编码我所需要的。但此代码在codeingiter和PHP的较低版本中工作。我不知道问题出在哪里。上传文件时,我总是有一个错误,您没有选择要上传的文件 有什么问题吗 提前谢谢 控制器 public function do_upload() { $this->load->library('upload'); //call codeigniter upload library

我在使用Ajax和Codeigniter上传文件时遇到问题。我已经读过base64编码我所需要的。但此代码在codeingiter和PHP的较低版本中工作。我不知道问题出在哪里。上传文件时,我总是有一个错误,您没有选择要上传的文件

有什么问题吗

提前谢谢

控制器

public function do_upload()
    {
    $this->load->library('upload'); //call codeigniter upload library

        //upload configurations
        $base_path = 'uploads';
        $config['upload_path']  = $base_path;
        $config['allowed_types']= 'jpg|jpeg|png|bitmap|pdf|docx|doc';
        $config['max_size']     = 0;

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

        if(!$this->upload->do_upload('user_pic')){
            //if upload does not meet the configuration settings throw error.
            $error = array('error' => $this->upload->display_errors());
            echo '<pre>';
            print_r($error);
            echo '</pre>';
        }else {
            //proceed upload
            $data = array(
                'uploaded_data' => $this->upload->data()
            );

            $file_name  = $data['uploaded_data']['file_name'];

        }
        }
阿贾克斯

HTML视图

<form enctype="multipart/form-data" id="edit_prof" class="form-horizontal">
    <div>
        <img id="Thumbnail" src="noimg.jpg">
    </div>

    <fieldset>
        <div class="form-group">
            <label for="cpassword" class="col-sm-4 control-label">Change Photo</label>
            <div class="col-sm-5">
                <input type="file" id="user_pic" name="user_pic" class="form-control input-file" placeholder="Picture" style="font-size:15px;">
                <input type="text" id="user_memo" name="user_memo" class="form-control input-file" style="font-size:15px;">
            </div>
        </div>

        <div class="form-group">
            <div class="col-sm-offset-4 col-sm-8">
                <input type="hidden" name="user_profile" id="user_profile" value="<?php //echo $profile_pic; ?>"/>
                <span onclick="formSubmit();" class="btn btn-primary"><i class="glyphicon glyphicon-ok-sign"></i> Save Changes</span>
            </div>
        </div>
    </fieldset>
</form>

我最近也有类似的情况。 我希望我的回答有点帮助

第一步。检查Jquery版本

我的案例:1.x.x不工作,因为POST/GET为空

plz最新版本下载

第二步。测试“$\u文件”

//HTML

<script>
    function formSubmit () {
        var form = $("#edit_prof")[0];
        var formData = new FormData (form);
        var FileInfo = $ ("input[name='user_pic']")[0].files[0];

        formData.append ("user_memo", $ ('input[name="user_memo"]').val ());
        formData.append ("file", FileInfo);

        $.ajax ({
            url: "Codeigniter URL"
            , type: "POST"
            , dataType: 'text'
            , cache: false
            , processData: false
            , contentType: false
            , data: formData
            , beforeSend: function ()
            {
                $('input[name="user_pic"]').hide();
                $('input[name="user_memo"]').hide();
            }
            , success: function (getData)
            {
                console.log(saveImgUrl);
                if(saveImgUrl.length > 0)
                {
                    $('#Thumbnail').attr('src', saveImgUrl);
                }

                $('input[name="user_pic"]').show();
                $('input[name="user_memo"]').show();
            }
        });
    }
</script>

什么触发了JS的运行?它是在事件处理程序中还是在加载页面后立即运行?@Phil我编辑了我的jquery/ajaxcode@Phil系统不会过帐数据。为什么呢?
<form enctype="multipart/form-data" id="edit_prof" class="form-horizontal">
    <div>
        <img id="Thumbnail" src="noimg.jpg">
    </div>

    <fieldset>
        <div class="form-group">
            <label for="cpassword" class="col-sm-4 control-label">Change Photo</label>
            <div class="col-sm-5">
                <input type="file" id="user_pic" name="user_pic" class="form-control input-file" placeholder="Picture" style="font-size:15px;">
                <input type="text" id="user_memo" name="user_memo" class="form-control input-file" style="font-size:15px;">
            </div>
        </div>

        <div class="form-group">
            <div class="col-sm-offset-4 col-sm-8">
                <input type="hidden" name="user_profile" id="user_profile" value="<?php //echo $profile_pic; ?>"/>
                <span onclick="formSubmit();" class="btn btn-primary"><i class="glyphicon glyphicon-ok-sign"></i> Save Changes</span>
            </div>
        </div>
    </fieldset>
</form>
<script>
    function formSubmit () {
        var form = $("#edit_prof")[0];
        var formData = new FormData (form);
        var FileInfo = $ ("input[name='user_pic']")[0].files[0];

        formData.append ("user_memo", $ ('input[name="user_memo"]').val ());
        formData.append ("file", FileInfo);

        $.ajax ({
            url: "Codeigniter URL"
            , type: "POST"
            , dataType: 'text'
            , cache: false
            , processData: false
            , contentType: false
            , data: formData
            , beforeSend: function ()
            {
                $('input[name="user_pic"]').hide();
                $('input[name="user_memo"]').hide();
            }
            , success: function (getData)
            {
                console.log(saveImgUrl);
                if(saveImgUrl.length > 0)
                {
                    $('#Thumbnail').attr('src', saveImgUrl);
                }

                $('input[name="user_pic"]').show();
                $('input[name="user_memo"]').show();
            }
        });
    }
</script>
    public function imgUpload()
    {
        $POST_ALL = $this->input->post();
        $FILE_ALL = $_FILES;

        // Image Process - Start

        // Image Process - End

        // echo var_dump($POST_ALL);
        echo var_dump($FILE_ALL);
    }