You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter+Ajax文件上传报错‘未选择上传文件’求助

解决CodeIgniter + Ajax文件上传报错“You did not select a file to upload.”

嘿,我来帮你排查下问题,这个报错我之前做项目时也碰到过,主要是几个细节没处理对,咱们一步步来改:

问题排查与修复步骤

1. JavaScript端:用FormData封装文件(关键!)

你现在用普通对象data = {}存文件,这没法正确处理文件上传需要的multipart/form-data格式,必须用FormData对象来封装文件数据。修改后的JS代码如下:

uploadFile(){ 
    let formData = new FormData(); 
    // 把文件追加到FormData里,字段名和后端要对应
    formData.append('file', document.getElementById('fileToUpload').files[0]); 
    $.ajax({ 
        url:'/admin/conference/presentation/changes/file', 
        data: formData, 
        type: 'POST', 
        contentType: false, 
        processData: false, 
        success: function(data){ 
            console.log(data); 
        },
        error: function(xhr){
            console.log(xhr.responseText); // 加个错误回调,方便看更多报错细节
        }
    });
}

2. CodeIgniter端:修正拼写错误+指定上传字段名

你代码里有个明显的拼写错误,还有字段匹配的问题:

$config['upload_path'] = FCPATH.'./'; 
$config['allowed_types'] = '*'; // 把allowed_tyeps改成allowed_types,拼写错了!
$this->load->library('upload', $config); 

// do_upload()默认找名为userfile的字段,你传的是file,所以要明确指定字段名
if(!$this->upload->do_upload('file')){ 
    $upload_error = $this->upload->display_errors(); // 补全display_errors()方法
    echo json_encode(['status' => 'error', 'message' => $upload_error]);
} else {
    $upload_data = $this->upload->data();
    echo json_encode(['status' => 'success', 'data' => $upload_data]);
}

额外小提示

  • 确保你的HTML文件输入框id和name都对应上,比如:
<input type="file" id="fileToUpload" name="file">
  • 检查服务器上传目录的权限,确保CodeIgniter有写入权限,避免上传成功但文件存不进去的问题。

内容的提问来源于stack exchange,提问作者bob342

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:19:16