Php 如何使用codeigniter上载多个图像

Php 如何使用codeigniter上载多个图像,php,mysql,codeigniter,Php,Mysql,Codeigniter,我能够上传并插入数据库中的图像。但是我无法上传多张图片,我应该在下面的代码中更改什么,才能上传多张图片 myform.php <?php echo form_open_multipart('admin/addproduct'); ?> <table border="0" cellspacing="0" cellpadding="0" style="width:60%;"> <tr> &

我能够上传并插入数据库中的图像。但是我无法上传多张图片,我应该在下面的代码中更改什么,才能上传多张图片

myform.php

<?php echo form_open_multipart('admin/addproduct'); ?> 
        <table border="0" cellspacing="0" cellpadding="0" style="width:60%;"> 
            <tr>
                <td style="vertical-align: top;width:50%;text-align: right;"> Product name </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_input($fpname) ?>  </td>
            </tr>  
            <tr>
                <td style="vertical-align: top;width:50%;text-align: right;"> Price </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_input($fprice) ?>  </td>
            </tr> 
            <tr>
                <td style="vertical-align: top;width:50%;text-align: right;"> Image 1: </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_upload("userfile"); ?></td>
            </tr>
             <tr>
                <td style="vertical-align: top;width:50%;text-align: right;"> Image 2: </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_upload("img2"); ?>    </td>
            </tr>
             <tr>
                <td style="vertical-align: top;width:50%;text-align: right;">Image 3:  </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_upload("img3"); ?>    </td>
            </tr>
             <tr>
                <td style="vertical-align: top;width:50%;text-align: right;"> Details </td>
                <td style="vertical-align: top;width:50%;"><?php echo form_textarea($fdetails) ?>  </td>
            </tr> 
            <tr>
                <td style="vertical-align: top;width:50%;text-align: center" colspan="2">
                    <input type="submit" value="Submit"/>
                </td> 
            </tr> 
        </table>  
      <?php echo form_close(); ?>  

产品名称
价格
图1:
图2:
图3:
细节
controller.php

      function addproduct() {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1879800';
        $config['max_width'] = '1024';
        $config['max_height'] = '2768';
  $config['encrypt_name'] = TRUE;
        $this->load->library('upload', $config);
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<li>', '</li>')->set_rules('pname', 'Product Name', 'trim|min_length[4]|required|max_length[112]');
        $this->form_validation->set_error_delimiters('<li>', '</li>')->set_rules('details', 'Details', 'trim|min_length[4]|required|max_length[12]');
        $this->form_validation->set_error_delimiters('<li>', '</li>')->set_rules('price', 'Price', 'trim|min_length[4]|required|max_length[112]|numeric');

        if (!$this->form_validation->run()) {//--false
            $data = $this->productmodel->productdetails();
            $this->load->view('admin/home', $data);
        }

        if (!$this->upload->do_upload()) {  // no file uploaded or failed upload
            $error = array('error' => $this->upload->display_errors());
            $data = $this->productmodel->productdetails();
            print_r($error);
            $this->load->view('admin/home', $data);
        } 
        else 
        {  
            $data =$this->upload->data();
            $this->productmodel->entry_insert_productdetails($data["file_name"]); 
            $data = $this->productmodel->productdetails();
              $this->session->set_flashdata('msg', 'One record added successfully...'); 
              redirect(base_url().'index.php/admin/index');
        }
    }
函数addproduct(){
$config['upload_path']='./uploads/';
$config['allowed_types']='gif | jpg | png';
$config['max_size']='1879800';
$config['max_width']='1024';
$config['max_height']='2768';
$config['encrypt_name']=TRUE;
$this->load->library('upload',$config);
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters(“
  • ”、“
  • ”)->set_规则('pname'、'Product Name'、'trim | min_length[4]| required | max_length[112]); $this->form_validation->set_error_delimiters(“
  • ”、“
  • ”)->set_rules('details'、'details'、'trim | min|u length[4]| required | max|u length[12]); $this->form_validation->set_error_delimiters(“
  • ”、“
  • ”)->set_规则('price'、'price'、'trim | min_length[4]| required | max_length[112]| numeric'); 如果(!$this->form_validation->run()){/--false $data=$this->productmodel->productdetails(); $this->load->view('admin/home',$data); } 如果(!$this->upload->do_upload()){//未上载文件或上载失败 $error=array('error'=>$this->upload->display_errors()); $data=$this->productmodel->productdetails(); 打印错误($error); $this->load->view('admin/home',$data); } 其他的 { $data=$this->upload->data(); $this->productmodel->entry\u insert\u productdetails($data[“file\u name”]); $data=$this->productmodel->productdetails(); $this->session->set_flashdata('msg',成功添加了一条记录…); 重定向(base_url().'index.php/admin/index'); } }
    更新: 从表单生成的源代码

     <form action="http://localhost/wclick/index.php/admin/addproduct" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
            <table border="0" cellspacing="0" cellpadding="0" style="width:60%;"> 
                <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;"> Product name </td>
                    <td style="vertical-align: top;width:50%;"><input type="text" name="pname" value="" maxlength="190" size="20"  />  </td>
                </tr>  
                <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;"> Price </td>
                    <td style="vertical-align: top;width:50%;"><input type="text" name="price" value="" maxlength="20" size="20" placeholder=" " id="txtsubject"  />  </td>
                </tr> 
                <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;"> Image 1: </td>
                    <td style="vertical-align: top;width:50%;"><input type="file" name="userfile" value=""  /></td>
                </tr>
                 <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;"> Image 2: </td>
                    <td style="vertical-align: top;width:50%;"><input type="file" name="img2" value=""  />    </td>
                </tr>
                 <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;">Image 3:  </td>
                    <td style="vertical-align: top;width:50%;"><input type="file" name="img3" value=""  />    </td>
                </tr>
                 <tr>
                    <td style="vertical-align: top;width:50%;text-align: right;"> Details </td>
                    <td style="vertical-align: top;width:50%;"><textarea name="details" cols="20" rows="4" ></textarea>  </td>
                </tr> 
                <tr>
                    <td style="vertical-align: top;width:50%;text-align: center" colspan="2">
                        <input type="submit" value="Submit"/>
                    </td> 
                </tr> 
            </table>  
          </form>
    
    
    产品名称
    价格
    图1:
    图2:
    图3:
    细节
    
    如果查看CI手册,则必须提供上传的字段名

    $field_name = "some_field_name";
    $this->upload->do_upload($field_name);
    

    您需要对每个要更新的不同文件执行此操作,可能是在一个循环中。

    请查看以下链接,因为它们可能会帮助您:


    每次上传前调用下面的函数

    $this->upload->initialize($upload);
    
    假定此数组中的所有文件

    $\u文件['userfile']['name']
    那么你的脚本看起来像

            $this->load->library('upload');
        for ($k = 0; $k < count($_FILES['userfile']['name']); $k++) {
            $this->upload->initialize($upload); //must reinitialize to get rid of your bug ( i had it as well)
            if (!$this->upload->do_upload('userfile',$k)) {
                $this->load->view('upload/image_form', $data + array('error'=>$this->upload->display_errors()));
            }
            $udata[$k] = $this->upload->data(); //gradually build up upload->data()
        }
    
    $this->load->library('upload');
    对于($k=0;$kupload->initialize($upload);//必须重新初始化才能消除您的bug(我也有过)
    如果(!$this->upload->do_upload('userfile',$k)){
    $this->load->view('upload/image_form',$data+array('error'=>$this->upload->display_errors());
    }
    $udata[$k]=$this->upload->data();//逐步建立upload->data())
    }
    
    向我们展示form_input()和form_open_multipart('admin/addproduct')的源代码@我更新了上面的问题。请检查@Anonymous2011的可能副本,该问题与链接不完全一致。请跟我读一遍我的问题。你有没有看到我有不同的文件名&我怎样才能把它们保存一次,你在一个接一个地教我format@rani试着理解,我说添加$this->upload->initialize($upload);在每次do_upload函数调用之前执行此操作。我在这里写的示例代码是根据我需要一组文件来上传多个文件。好的,那么我如何将这些文件保存到我的数据库中呢?就像我的表中有四个数据库列一样,我怎样才能将它们上传到我的数据库表中?还没有解决,如何将每个img名称保存到数据库中?经过这么多天,我终于解决了这个问题。请你投票支持我的上述问题,因为它是-1投票