【问题标题】:File Upload inside regular form not getting uploaded常规格式中的文件上传未上传
【发布时间】:2016-01-06 01:40:03
【问题描述】:

我在常规表单中有一个文件上传输入属性来上传照片。

<form class="reg-page" action="phpMailer/sendEmail.php" method="post" enctype="multipart/form-data">

  <div class="form-group">
    <label>Name <span class="color-red">*</span>
    </label>
    <input type="text" class="form-control margin-bottom-20" name="name" required>
  </div>
  <div class="form-group">
    <label>Email <span class="color-red">*</span>
    </label>
    <input type="text" class="form-control" name="email" required>
  </div>
  <label class="control-label">Photo <span class="color-red">*</span>
  </label>
  <input type="file" class="file" name="photo">
  <input type="submit" class="btn btn-apply" value="submit"></input>
</form>

我使用PHP处理POST参数和$_FILES参数,但是当我尝试var_dump并查看后端是否接收到文件时,$_FILES数组似乎是空的。

var_dump($_FILES);

发生这种情况的任何原因?

编辑:

这是我的 PHP 文件,

$msg = "";
foreach ($_POST as $key => $value) {
    if ($key != "photo") {
        $msg = $msg . "<br/>" . $key . " : " . $value;
    }
}
echo $msg."<br/>";

var_dump($_FILES);

if(!empty($_FILES))
{
    echo "Files Not Empty";
}

这会打印出所有的 $_POST 参数

然后

数组(0) { }

对于 $_FILES

【问题讨论】:

  • 发布您的 PHP 代码。
  • 我添加了相关的php代码部分
  • 可能是文件权限问题?您是否定义了错误报告以查看是否发生了某些错误?看到这个帖子:stackoverflow.com/a/5438125/460557
  • 还有你的 PHP 版本是什么?
  • 另一个建议,看看你的 PHP.INI 文件,看看你的文件上传配置是否像file_uploads = On一样打开

标签: php html forms


【解决方案1】:

试试下面几行看看。

echo "<pre>";
var_dump($_FILES['photo']); //or print_r
echo "</pre>";

【讨论】:

  • 对不起,我没有把它放在问题中,但提交按钮不是问题。我修改了问题中的表单以具有提交按钮。基本上我已经确认了所有的$_POST参数,只是php文件中的$_FILES是空的。
【解决方案2】:

根据 cmets 的建议,&lt;form&gt; (Form Tag) 标记不具有确实导致问题的属性 class

所以解决问题的代码是:

<form action="phpMailer/sendEmail.php" method="post" enctype="multipart/form-data">

【讨论】:

  • 事实上,class 是一个Global Attribute,它可以出现在任何元素上。顺便说一句,W3Schools 不是一个好的来源。
  • &lt;form&gt; 标签确实有class 属性,因为它是一个全局属性。问题是别的。
  • 我从 MDN 看到了该引用,但没有地方提到表单中的类属性之间的关联以及与 enctype 属性关联的可能原因。我已经在这里进行了测试,并且发生了同样的情况。我使用 JSF+primefaces、纯 JSP+servlet、旧 ASP+vb 和 PHP 进行了测试。然后所有人都有同样的问题,文件不会被上传。我的猜测是属性类和编码类型有问题。您从哪里得知 W3Schools 不是一个好的来源?
  • 可能存在与 JSF、JSP 或 ASP 相关的问题,但 OP 将他的问题标记为 php。我已经使用 PHP 多年了,我的表单中总是有 enctypeclass 属性,完全没有问题。
  • 这毫无意义。 class 属性永远不会到达服务器端。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2013-12-20
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多