PHP - $_FILES 数组为空 [重复]
Posted
技术标签:
【中文标题】PHP - $_FILES 数组为空 [重复]【英文标题】:PHP - $_FILES array is empty [duplicate] 【发布时间】:2014-03-23 07:15:13 【问题描述】:是的,enctype
属性已设置。其他表单/表单处理程序工作正常,因此临时目录必须是可写的。我没有想法了。
我检查了帖子值,$_POST['file']
存在并包含文件名。
这是我的表单和处理它的 php。我错过了什么?
<form action='orl_ftp.php' method='post' enctype='multipart/form-data'>
<table>
<tr>
<td>Choose File: </td>
<td><INPUT type='file' id='file' name='file'></td>
</tr>
<tr>
<td> </td>
<td><INPUT type='submit' name='Submit' value='Process'></td>
</tr>
</table>
</form>
以及相关的PHP代码。请注意,$_FILES 数组已设置,它只是空。
if(isset($_POST['Submit']))
$upload_results = "";
if(!isset($_FILES))$upload_results .= "No files uploaded";
if($upload_results == "")
echo "<pre>";
var_dump($_FILES);
exit;
// ...
【问题讨论】:
由于您已将文件字段命名为与 id 相同的名称,是否会发生冲突? @PhilipG 真的是这样吗?我曾经构建的每个文件上传表单我只使用file
作为名称和 ID,它一直有效.. 我会尝试更改它,不会受伤..
我不太明白这里的问题。如果没有上传任何内容,那么您不能指望它显示任何内容。我在任何地方都看不到move_uploaded_file
,所以这告诉我这不是完整的代码。要添加,您说“数组”。在处理数组时,如果你是,那么这个name='file'
需要括号name='file[]'
PHP 具有控制最大上传大小的变量。您的 Web 服务器具有限制最大请求大小的配置。你还没有发布关于这两个的任何信息。我建议你谷歌一下。
完成这个检查清单:***.com/a/3587158/930917
【参考方案1】:
在第 101 行:
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" />
^
这是导致问题的原因,浏览器保持此表单打开,因此缺少enctype
是问题所在。正确删除或关闭此表单。
例子:
<?php
if(isset($_POST['Submit']))
$upload_results = "";
if(!isset($_FILES))$upload_results .= "No files uploaded";
if($upload_results == "")
echo "<pre>";
var_dump($_FILES);
exit;
?>
<form action='' method="post" />
<form action='' method='post' enctype='multipart/form-data'>
<table>
<tr>
<td>Choose File: </td>
<td><INPUT type='file' id='file' name='file'></td>
</tr>
<tr>
<td> </td>
<td><INPUT type='submit' name='Submit' value='Process'></td>
</tr>
</table>
</form>
这不会发布任何文件。
【讨论】:
@AlirezaFallah,他在编辑帖子之前做过。我到底为什么要编造这个? 不,他不是吗?标签末尾没有斜线! 是的,我以前做过,当我发布这个时意识到,但我修复了它,它仍然坏了。 @Adelphia,我已取消删除我的问题并更正了它。一开始我是对的,但不是正确的行,因为您没有发布所有相关代码。 @Adelphia 为展示完整代码付出了代价 ;-) 重要的是小事。 ;-)【参考方案2】:您在同一个脚本中有多个表单,因此每个表单都需要enctype='multipart/form-data'
此外,您似乎没有关闭第一个表单并且执行 <form ... />
不是有效的 html。
【讨论】:
这解决了我的问题,谢谢!基本上,如果页面上有超过 1 个表单,请正确关闭它们。以上是关于PHP - $_FILES 数组为空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Magento 图像文件上传器错误:$_FILES 数组为空