PHP / CodeIgniter - 完全忽略$ _FILES

时间:2010-12-02 17:55:18

标签: php codeigniter

我在视图中有以下内容

<input class="file" name="mpfile[]" type="file" size="32" />

在我的控制器中,我有以下代码。

if(isset($_FILES['mpfile'])) {
    echo 'testing';
}

相当简单是吗? ....除非每次我运行它,无论我是否选择了一个文件,它都会运行......如果我有一个文件准备好输入它应该只运行回声吗?

9 个答案:

答案 0 :(得分:8)

确保您的FORM元素具有以下属性:

method="POST"

enctype="multipart/form-data"

  • 基督教

答案 1 :(得分:2)

检查您的PHP.ini:

file_uploads = "1"
post_max_size = 50000
upload_max_file_size = 2M

执行phpinfo();

免责声明 php.ini值可能略有偏差,但你会发现它们我确定。名称是正确的,不确定值是否。

答案 2 :(得分:0)

  if(isset($_FILES['mpfile']['name']) && $_FILES['mpfile']['name'])
  {
    echo 'testing';
   }

答案 3 :(得分:0)

假设<input>嵌入在您的脚本上执行<form>的{​​{1}},您是否尝试过转储POST? E.g:

$_FILES

你可以发布结果吗?还有,是否为PHP启用了上传?

答案 4 :(得分:0)

您是否尝试过使用Codeigniter的上传课程? Codeigniter可以与其他全局变量一起清空$_FILES

也许尝试将$_FILES转储到codeigniters index.php的顶部以确保

答案 5 :(得分:0)

这是黑暗中的又一次刺伤。检查错误代码:

if($_FILES['mpfile']['error'] != UPLOAD_ERR_NO_FILE) {
     echo 'testing'; 
}

答案 6 :(得分:0)

您还需要检查空文件:

if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] != 4)

见这篇文章:

http://codeigniter.com/forums/viewthread/136610/#673652

“上传字段会被放入$ _FILES,即使它是空的,错误和大小分别设置为4和0”

编辑添加:

我从未上传多个,但我认为在您的情况下,您会在测试中的每个['mpfile']之前添加['userfile']

答案 7 :(得分:0)

if (!empty($_FILES['mpfile']['name'])) {
    var_dump($_FILES['mpfile']['name']);
}

答案 8 :(得分:0)

您正在定义一个数组:

<input class="file" name="mpfile[]" type="file" size="32" />

在PHP中,变量$_FILES['mpfile']也是一个(空)数组。 如果您现在使用isset进行测试,那么它会被设置,因为它是一个数组(并且永远不会为空)。

使用empty()进行测试。