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

上传文件后数据库ukuran_file字段始终为0,如何正确插入文件大小?

问题解决:CodeIgniter上传文件时文件大小字段始终为0

你的代码核心问题出在上传数据的获取方式上:

  1. 你用$this->upload->data('file_name')仅获取到文件名(字符串类型),随后将这个字符串赋值给$dokumen_file,再尝试用$dokumen_file['size']读取文件大小——但字符串不存在数组索引['size'],这个值实际为无效值,最终插入数据库时被转为0。
  2. 代码未处理上传失败的场景,若文件不符合规则(如大小超限、类型不允许),程序仍会执行插入操作,导致错误数据入库。

修正后的完整代码

$djenjang_capaian = $this->session->userdata('djenjang_capaian');
$pengirim = $this->session->userdata('pengirim');

$path = FCPATH . "/upload/document/capaian/$pengirim";

if (!is_dir($path)) {
    mkdir($path, 0777, TRUE);
}

$config['upload_path'] = $path;
$config['allowed_types'] = 'jpg|png|pdf|xlsx|xls|doc|docx|zip|rar';
$config['max_size'] = "2048";
$file_name = "dok-cpn-" . rand(100, 999) . uniqid();
$config['file_name'] = $file_name;

$this->load->library('upload', $config);

// 先判断文件上传是否成功
if ($this->upload->do_upload('dokumen_file')) {
    // 获取包含所有上传信息的完整数组
    $upload_data = $this->upload->data();
    
    // 从完整数组中分别提取文件名和文件大小
    $dokumen_file = $upload_data['file_name'];
    $ukuran_file = $upload_data['size'];
    
    $data = array(
        'dokumen_file' => $dokumen_file,
        'ukuran_file' => $ukuran_file
    );

    if ($this->db->insert($djenjang_capaian, $data)) {
        $this->session->set_flashdata("success", " Data berhasil ditambahkan!");
        redirect('user/page/pemenuhan_dokumen');
    } else {
        $this->session->set_flashdata("error", " Data gagal ditambahkan!");
        redirect('user/page/pemenuhan_dokumen');
    }
} else {
    // 上传失败时返回错误提示
    $error_msg = $this->upload->display_errors();
    $this->session->set_flashdata("error", " Upload gagal: " . $error_msg);
    redirect('user/page/pemenuhan_dokumen');
}

关键修改点说明

  • 调用$this->upload->data()不带参数,获取包含文件大小、文件名、文件类型等所有上传信息的数组。
  • 增加上传成功的判断逻辑,避免上传失败时执行无效的数据库插入操作。
  • 从完整的上传数据数组中提取size字段,确保文件大小值准确有效。

内容的提问来源于stack exchange,提问作者maartin and gina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:13:34