【问题标题】:How to upload multiple upload form element in Codeigniter3?如何在 Codeigniter 3 中上传多个上传表单元素?
【发布时间】:2026-01-17 14:35:01
【问题描述】:

我正在使用表单 Codeigniter3 表单助手中的多个表单上传元素创建多个上传图像。 我有 4 个 upload_form 来上传数据,如下所示

  1. eng_up_img
  2. kh_up_img
  3. ch_up_img
  4. fr_up_img

我已经使用这些字段将表单元素的所有不同图像上传到带有图像属性的数据库。

问题我不明白如何将数据从每个表单元素发布到 PHP 变量以及如何从表单中获取这些字段。

这是我的表格

 <?PHP echo form_open_multipart('', array('id' => 'eng_form')); ?>
 <?PHP echo form_upload('eng_up_img', '', 'class="" id="eng_up_img" '); ?>
 <?PHP echo form_upload('kh_up_img', '', 'class="" id="kh_up_img" '); ?>
 <?PHP echo form_upload('ch_up_img', '', 'class="" id="ch_up_img" '); ?>
 <?PHP echo form_upload('fr_up_img', '', 'class="" id="fr_up_img" '); ?>
 <?PHP echo form_close(); ?>

这是控制器功能

public function upload() {

        $this->load->helper(array('form', 'url'));
        $config['upload_path'] = '../assets/img/slide';
        $config['image_library'] = 'gd2';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000000';
        $config['max_width'] = '102400';
        $config['max_height'] = '768000';
        $this->load->library('upload', $config);
        $token = $this->security->get_csrf_hash();

        $res = FALSE;
        $img_data = array(
            'eng_up_img' => $this->upload->do_upload('eng_up_img'),
            'kh_up_img' => $this->upload->do_upload('kh_up_img'),
            'ch_up_img' => $this->upload->do_upload('ch_up_img'),
            'fr_up_img' => $this->upload->do_upload('fr_up_img'),
        );
        if (!$img_data['eng_up_img'] && !$img_data['kh_up_img'] && !$img_data['ch_up_img'] && !$img_data['fr_up_img']) {
            $res = FALSE;
        } else {
            $eng_up_img = $this->upload->data();
            $kh_up_img = $this->upload->data();
            $ch_up_img = $this->upload->data();
            $fr_up_img = $this->upload->data();
        }
        echo json_encode(array('res' => $res, 'img_pro' => $data, 'token' => $token));
    }

希望朋友能帮帮我谢谢

【问题讨论】:

  • 为什么我只有最后一个 form_upload ?

标签: php codeigniter file-upload


【解决方案1】:

我认为你只得到最后一个 form_upload 的原因是因为它们都共享相同的名称。 尝试像这样更新您的视图:

$arrLanguagePrefix = array("eng","kh","ch","fr");
echo form_open_multipart('', array('id' => 'eng_form')); 

foreach($arrLanguagePrefix AS $value)
{
    $arrData = array
    (
        "id" => $value."_up_img",
        "name" => $value."_up_img"
    );

    echo form_upload($arrData);
}
echo form_close(); 

【讨论】:

    【解决方案2】:

    我有上传文件的 Codeigniter 助手,可能对你有帮助

    function sf_upload($nama_gambar, $lokasi_gambar, $tipe_gambar, $ukuran_gambar, $name_file_form) {
        $CI                    = &get_instance();
        $nmfile                = $nama_gambar . "_" . time();
        $config['upload_path'] = './' . $lokasi_gambar;
        //tambahi skrip disini is_dir exist
        $config['allowed_types'] = $tipe_gambar;
        $config['max_size']      = $ukuran_gambar;
        $config['file_name']     = $nmfile;
        $CI->load->library('upload', $config);
        $CI->upload->do_upload($name_file_form);
        // die($CI->upload->display_errors());
        $result1 = $CI->upload->data();
        $result  = ['gambar' => $result1];
        $dfile   = $result['gambar']['file_name'];
        
            return $dfile; 
    }
    

    【讨论】: