【问题标题】:How can i add two image from two different inputs on single page in codeigniter如何在codeigniter的单个页面上添加来自两个不同输入的两个图像
【发布时间】:2018-06-03 08:39:52
【问题描述】:

我正在尝试一次在数据库中上传两个图像,从具有两个不同文件输入字段的单个表单提交尝试。 我尝试过,但是当我尝试使用 print_r 显示结果时它不起作用,它为两个输入字段提供了一个文件名。我怎样才能在codeigniter中完美地做到这一点。请帮助您参考我正在上传我的代码。如果有任何错误请告诉我。

HTML 表单代码

<form id="form_edit" method="post" action="<?php echo base_url(" admin/aboutus/update/".$aboutus->id); ?>" enctype="multipart/form-data" accept-charset="utf-8">
    <div class="form-group row">
        <div class="col-md-4 col-xs-4">
            <input type="text" name="imgtitle" title="About Us Image Title" class="form-control  input-sm" value="<?php echo set_value('imgtitle', $aboutus->imgtitle); ?>" placeholder="Image Title" required="required">
            <?php echo form_textarea(['rows'=>'15', 'name'=>'imgdetail','title'=>'About Us Image Description','class'=>'form-control mptop input-sm','required'=>'required','value'=> set_value('detail', $aboutus->imgdetail)]); ?>
            <input type="file" name="img" title="About Us Image" class="form-control input-sm">
        </div>
        <div class="col-md-4 col-xs-4">
            <input type="text" title="About Us Title" class="form-control input-sm" name="title" value="<?php echo set_value('title', $aboutus->title); ?>" placeholder="Type left side title of about us of maximum 15 characters" required="required">
            <?php echo form_textarea(['rows'=>'15', 'name'=>'detail','title'=>"About Us Detail",'class'=>'form-control mptop input-sm mptop','required'=>'required','value'=> set_value('detail', $aboutus->detail)]); ?>
        </div>
        <div class="col-md-4 col-xs-4">
            <input type="text" name="img_2title" title="About Us Image Title" class="form-control  input-sm" value="<?php echo set_value('imgtitle', $aboutus->img_2title); ?>" placeholder="Image Title" required="required">
            <?php echo form_textarea(['rows'=>'15', 'name'=>'img_2detail','title'=>'About Us Image Description','class'=>'form-control mptop input-sm','required'=>'required','value'=> set_value('detail', $aboutus->img_2detail)]); ?>
            <input type="file" name="img_2" title="About Us Image" class="form-control input-sm">
            <!-- id="detail" -->
        </div>
    </div>
    <div class="form-group row">
        <div class="col-md-12 col-xs-12 mptop rmzero rpZero">
            <div class="btn-group pull-right text-right">
                <a href="<?php echo base_url('admin/dashboard');?>" class="btn btn-warning btn-sm"><i class="fa fa-arrow-left"></i> Back</a>
                <!-- <a href="<?= base_url('fassets/images/aboutus/'.$aboutus->img); ?>" class="btn btn-info btn-sm" name="preview" id="save"><i class="fa fa-search"></i> Preview</a> -->
                <button type="submit" class="btn btn-success btn-sm" name="submit" id="save"><i class="fa fa-save"></i> Save</button>
            </div>
        </div>
    </div>
</form>

我的 Codeigniter 控制代码

public function update($id)
{

    $res = array();     
    //form field validation rules
    $this->form_validation->set_rules('title', 'Title', 'required|max_length[15]');
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   
    $this->form_validation->set_rules('detail', 'Detail', 'required|max_length[2000]'); 
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   
    $this->form_validation->set_rules('imgtitle', 'Image Title', 'required|max_length[15]');
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   
    $this->form_validation->set_rules('imgdetail', 'Image Description', 'required');
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   
    $this->form_validation->set_rules('img_2title', 'Second Image Title', 'required|max_length[15]');
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   
    $this->form_validation->set_rules('img_2detail', 'Second Image Description', 'required');
    if (!$this->form_validation->run()) {
        echo json_encode(array('mes' => 'text-danger', 'msg' => validation_errors('')));
        exit;
    }   

    $config['upload_path'] = 'fassets/images/aboutus';
    $config['allowed_types'] = 'jpg|jpeg|png|gif';
    //$config['file_name'] = $_FILES['img']['name'];
    $config['overwrite'] = TRUE;
    //Load upload library and initialize configuration
    $this->load->library('upload', $config);        
        // echo $image_path; exit;      
    if((!$this->upload->do_upload('img')) && (!$this->upload->do_upload('img_2')))
    {
        $userData = array(
            'title' => $this->input->post('title'),
            'detail' => $this->input->post('detail'),   
            'imgtitle' => $this->input->post('imgtitle'),
            'imgdetail' => $this->input->post('imgdetail'), 
            'img_2title' => $this->input->post('img_2title'),
            'img_2detail' => $this->input->post('img_2detail')          

        );
        //Pass user data to model
        $insertUserData = $this->AboutusModel->update($userData, $id);
    }
    else
    {

        $userData = array(
            'title' => $this->input->post('title'),
            'detail' => $this->input->post('detail'),   
            'imgtitle' => $this->input->post('imgtitle'),
            'imgdetail' => $this->input->post('imgdetail'),
            'img_2title' => $this->input->post('img_2title'),
            'img_2detail' => $this->input->post('img_2detail'),             
            'img' =>  $this->upload->data('file_name'),
            'img_2' =>  $this->upload->data('file_name')
        );
        echo "<pre>";
        print_r($userData);
        exit;
        //Pass user data to model
        $insertUserData = $this->AboutusModel->update($userData, $id);
    }
        //Storing insertion status message.
    if($insertUserData){
        $res = array(
            'mes' => 'text-success',
            'msg' => "Record has been saved successfully.",
        );
        echo json_encode($res);                     
    } else {
        $res = array(
            'mes' => 'text-danger',
            'msg' => "Oops! Something went wrong.",
        );
        echo json_encode($res);
    }           
}

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    使用$this-&gt;upload-&gt;data('file_name'),您只能获得最后上传的文件名。你错过了第一个。要解决这个简单的问题,请将两个文件名存储在变量中,以便在两个文件都成功上传后使用。

    之前:

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

    添加:

    $img1 = $_FILES['img']['name'];
    $img2 = $_FILES['img_2']['name'];
    

    替换:

    'img' =>  $this->upload->data('file_name'),
    'img_2' =>  $this->upload->data('file_name')
    

    与:

    'img' =>  $img1,
    'img_2' =>  $img2
    

    另一个问题:

    在您当前的代码中,如果您的第一次上传成功,第二次将失败。为了防止这种情况发生。

    替换:

    if((!$this->upload->do_upload('img')) && (!$this->upload->do_upload('img_2')))
    

    与:

    $upload1_ok = $this->upload->do_upload('img');
    $upload2_ok = $this->upload->do_upload('img_2');
    
    if($upload1_ok == false && $upload2_ok == false)
    

    【讨论】:

    • 它完成了亲爱的@Karlo Kokkak 但是一个问题现在仍然存在,它上传了数据库中的两个图像名称。但不上传文件夹路径中的两个图像它只上传文件夹中的第一个图像..
    • 上传成功后,可以print_r($_FILES);吗?是否显示错误号?
    • Array ([img] => Array ([name] => 3.jpeg [type] => image/jpeg [tmp_name] => C:\xampp\tmp\php3337.tmp [error ] => 0 [size] => 230038) [img_2] => Array ([name] => 2.jpeg [type] => image/jpeg [tmp_name] => C:\xampp\tmp\php3338.tmp [错误] => 0 [大小] => 41805 ) )
    • 再次更新了我的答案。请最后一部分。
    • 已完成亲爱的@Karlo 我们只是在更新数据库中的名称,我们没有上传文件,
    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多