CodeIgniter 中的 Ajax 上传返回"you did not select a file to upload"



我试图通过CodeIgniter中的Ajax上传图像,但我总是得到错误"您没有选择要上传的文件"。

下面是jQuery代码:
$(document).ready(function (e) {
    $('#submitUpload').bind('click', function(evt) {
        var $btn = $(this).button('loading');
        var formData = new FormData();
        var inputImage = $('#inputImage')[0];
        console.log(inputImage.files[0]);
        formData.append('file', inputImage.files[0]);
        $.ajax({
            url: baseUrl + 'trainings/uploadImageAsync',
            type: 'post',
            dataType: 'json',
            data: formData,
            contentType: false,
            cache: false,
            processData: false,
            success: function(data) {
                console.log(data);
                $btn.button('reset');
            }
        });
    });
});

这部分的格式是:

<div class="modal-body" id="bodyTrainingForm">
    <form class="form-horizontal" id="formTrainingForm" enctype="multipart/form-data">
        <div class="form-group">
            <label for="inputTitle" class="col-sm-2 control-label">Title</label>
            <div class="col-sm-9">
                <input type="text" class="form-control" id="inputTitle" name="title" placeholder="Title">
            </div>
        </div>
        <div class="form-group">
            <label for="inputImg" class="col-sm-2 control-label">Image</label>
            <div class="col-sm-9">
                <img class="img-thumbnail" src="holder.js/140x140">
                <input class="form-control" type="file" name="file" id="inputImage" required>
                <button data-loading-text="Loading..." type="button" class="btn btn-default" id="submitUpload">Upload</button>
            </div>
        </div>
    </form>
</div>

和PHP部分似乎工作:

public function uploadImageAsync()
{
    $config['upload_path'] = base_url() . 'asset/img/thumbnails/';
    $config['allowed_types'] = 'jpg|png';
    $config['max_size'] = 1024 * 8;
    $config['max_width'] = 140;
    $config['max_height'] = 140;
    $this->load->library('upload', $config);
    if (!$this->upload->do_upload()) {
        echo json_encode(array(
            'error' => $this->upload->display_errors(),
        ));
        return;
    }
    echo json_encode(array(
        'success' => $this->upload->data(),
    ));
}

console.log (inputImage.files [0]);完美地返回我想附加到FormData的文件,这似乎不起作用。我遗漏了什么?

我明白了。我认为你应该先尝试更改文件夹的权限。我希望这能帮到你

尝试在你的upload->do_upload()中包含一个文件

if(!$this->upload->do_upload('file'){ /* error */ }

我自己想出来的!我的错误是把base_url()加到$config['upload_path']。我应该这样做的:

$config['upload_path'] = './assets/img/thumbnails/';

最新更新