【问题标题】:Codeigniter File Upload error: 'You did not select a file to upload'Codeigniter 文件上传错误:“您没有选择要上传的文件”
【发布时间】:2015-11-07 10:27:16
【问题描述】:

我正在使用 codeigniter 3,在 do_upload() 函数中出现类似 You did not select a file to upload. 的错误,但正常的 php 函数 move_uploaded_file() 工作正常。我参考了stackoverflow的大部分答案,但我没有得到解决方案。

我认为它可能在wamp 问题中,但我没有弄清楚它在哪里。 如果此代码在您的机器上运行,那么它将在我的 wamp php 或 Apache 设置中出现问题。

查看:(upload.php)

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php echo form_open_multipart('welcome/do_upload'); ?>
    <input id="sfile" type="file" name="file">
    <input type="submit" value="Submit">
<?php echo form_close(); ?>
</body>
</html> 

控制器:(welcome.php)

function do_upload()
    {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

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

        if ( ! $this->upload->do_upload()) //not working
        {
            $error = array('error' => $this->upload->display_errors());
            var_dump($error);
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());
        }
        echo $basename = $_FILES['file']['name'];
        move_uploaded_file($_FILES['file']['tmp_name'],$config['upload_path'].$basename);
        // move_uploaded_file() works fine
    }

【问题讨论】:

  • 尝试在$this-&gt;upload-&gt;do_upload('file')中传递字段名并检查
  • @Saty 是的,我试过同样的问题
  • 检查您上传的文件的大小,因为您设置了$config['max_size'] = '100';。这意味着您将无法上传超过 100 kb 的文件大小
  • 另外请检查您上传目录的权限。
  • @Saty 您的第一个解决方案是正确的。在我这样尝试之前,但我现在没有得到它正在工作。我现在正在测试

标签: php codeigniter


【解决方案1】:

这可能与由于 301 错误导致的帖子丢失有关。

尝试替换

<?php echo form_open_multipart('welcome/do_upload'); ?>

使用(解决方法)

<form action="do_upload" method="post" enctype="multipart/form-data">

如果有效,则路由配置中存在一些错误

【讨论】:

    【解决方案2】:

    按照 CI 3,您需要在 $this-&gt;upload-&gt;do_upload('') 中传递名称属性。

    所以你需要在其中传递name属性

    $this->upload->do_upload('file');
    

    检查您上传的文件的大小,因为您设置了 $config['max_size'] = '100';。这意味着您将无法上传超过 100 kb 的文件大小

    阅读File Uploading Class

    【讨论】:

      【解决方案3】:

      先加载上传库,再初始化配置数据。

      并在 $this->upload->do_upload('file') 中传递输入文件类型的属性名称。

      function do_upload()
      {
          $config['upload_path'] = './uploads/';
          $config['allowed_types'] = 'gif|jpg|png';
          $config['max_size'] = '100';
          $config['max_width']  = '1024';
          $config['max_height']  = '768';
      
          $this->load->library('upload', $config);  # Load upload library
          $this->upload->initialize($config);   # Initialize 
          if ( ! $this->upload->do_upload('file')) 
          {
              $error = array('error' => $this->upload->display_errors());
              var_dump($error);
          }
          else
          {
              $data = array('upload_data' => $this->upload->data());
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-05
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 2016-03-13
        相关资源
        最近更新 更多