【问题标题】:PHP multipart/form DataPHP 多部分/表单数据
【发布时间】:2018-01-14 11:36:11
【问题描述】:

我正在尝试上传一个文件,但文件名是一个变量,因此我已经获得了输入类型的名称(我可以通过获取所有帖子上的数据并运行循环并获取键名来做到这一点)

然后我得到所有发布数据,但是它返回一个空数组,当我从表单中删除多部分/表单数据时,它将返回带有值的数组。然后我可以获得文件类型名称,但是它不会上传文件,因为我从表单中删除了多部分。 我怎样才能做到这一点?如果阅读代码你就会明白。请帮助我做到这一点。 这是我的浏览页面

public function addTest($app_id)
{
    $data=$this->input->post();
    $id=$this->session->userdata['loggedHospitalData']['hp_id'];


    while ($test = current($data)) {

        $dataArr=array(
                        "hospital_id" => $id,

                   );

        $test_id=key($data);

        $wherArr = array("test_id"=>$test_id);
        //$result = $this->Hospital_model->updateTestData($dataArr,$wherArr);


        $report=$this->input->post($test_id);




            $config['upload_path']          = './uploads/';
            $config['allowed_types']        = '*';
            $config['max_size']             = 5000000000000;
            $config['max_width']            = 10240;
            $config['max_height']           = 10240;

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


            if (!$this->upload->do_upload($report))
            {
                    $error = array('error' => $this->upload->display_errors());


            }
            else
            {

                    $data1 = array('upload_data' => $this->upload->data());


            }






        /*$dataRepArr=array(
                        "r_test_id " => $test_id,
                        "file" => $photo1,
                   );*/

        next($data);



//header('Location: http://localhost/docto/index.php/Hospital/patientView/'.$app_id);

    }
}

这是我的观点

<form action="<?php echo base_url(); ?>index.php/Hospital/addTest/<?php echo $appoinmentData->app_id; ?>" role="form"  method='post' onmouseover="return form_validate()" name="vform">
                  <div class="">
                    <ul class="to_do">

                      <?php

                      foreach ($testData as $test) {

                     echo '

                      <li>
                        <p>

                           '.$test->test_name.' </p>

                          </br>
                          <input type="file" class="btn btn-primary" name="'.$test->test_id.'">

                      </li>

                       ';

                       }


                      ?>
                    </ul>
                  </div>


                <input type="submit" class="btn btn-success btn-lg btn-block" value="Update" name="">
                </form>

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您需要multipart/form-data 才能上传规则。放回去。

    然后循环 $_FILES 以获取所有已上传的文件。

    【讨论】:

      【解决方案2】:

      multipart/form-data 必须用于文件上传

      你可以试试这样的:

      $this->load->library('upload');
      
      $config['upload_path']      =   './assets/uploads/'
      $config['allowed_types']    =   'jpg|png|jpeg|pdf';
      $config['max_size']     =   '0';            
      $config['overwrite']        =   TRUE;
      $config['encrypt_name']     =   TRUE;
      
      $this->upload->initialize($config);
      
      foreach($_FILES as $k => $v)
      {   
          if ($_FILES[$k]['name'] != '')
          {                                   
              //This do the trick,  do_upload need the name of the input
              //And in this case, name is the KEY of an array.
              if($this->upload->do_upload($k))
              {
                  //Upload Successful
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-16
        • 2018-12-06
        • 2013-06-06
        • 2022-11-11
        • 2020-09-03
        • 2013-03-06
        • 2013-04-12
        • 2011-01-16
        相关资源
        最近更新 更多