为什么在将文件上传到PHP时$_file是空的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我的Windows 7计算机上安装了WampServer 2。我正在使用Apache 2.2.11和PHP 5.2.11。当我尝试上传表单中的任何文件时,它似乎上传,但在PHP中,$_FILES数组是空的。文件c:\wamp\tmp夹中没有文件。我已经配置php.ini允许文件上传等。该tmp文件夹具有当前用户的读/写权限。我很难过。

HTML:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <form enctype="multipart/form-data" action="vanilla-upload.php" method="POST">
        Choose a file to upload: <input name="uploadedfile" type="file" /><br />
        <input type="submit" value="Upload File" />
    </form>
</body>
</html>

PHP:

<?php
echo 'file count=', count($_FILES),"\n";
var_dump($_FILES);
echo "\n";
?>
提问于
用户回答回答于

就HTML而言,你似乎正确地设置了该部分。你已经有了这对表格来说是非常重要的。

就你的安装程序,有时在多个系统上安装文件存在。确保您正在编辑正确的。我知道你说过你已经配置好了文件以使文件上载,但您是否也设置了和要比你想上传的文件更大?所以你应该:

file_uploads = On; sounds like you already did this
post_max_size = 8M; change this higher if needed
upload_max_filesize = 8M; change this higher if needed

用户回答回答于

这里有一个用PHP上传文件的清单:

  1. 检查php.ini: file_uploads = On post_max_size = 100M upload_max_filesize = 100M
    • 你可能需要使用.htaccess或者.user.ini如果你使用的是共享主机并且无权访问php.ini
    • 确保你正在编辑正确的ini文件 - 使用该phpinfo()功能来验证您的设置实际上正在应用。
    • 另外,还要确保你没有拼错大小-它应该是100M 没有 100MB

  2. 确保你的<form>标签有enctype="multipart/form-data"属性。没有其他标签会起作用,它必须是您的FORM标签。仔细检查拼写是否正确。仔细检查multipart / form-data是否包含在STRAIGHT QUOTES中,而不是从Word或从网站博客粘贴的智能引用(WordPress将直引号转换为角引号!)。如果您在页面上有多个表单,请确保它们都具有此属性。手动键入它们,或者尝试手动输入直接单引号。
  3. 确保你没有两个具有相同name属性的输入文件字段。如果您需要支持多个,请在名称的末尾添加方括号: <input type="file" name="files[]"> <input type="file" name="files[]">
  4. 确保你的tmp和upload目录具有正确的读写权限设置。临时上传文件夹在PHP设置中指定为upload_tmp_dir
  5. 确保你的文件目标和tmp / upload目录中没有空格。
  6. 确保<form>你的网页上的所有内容都有</form>密切的标签。
  7. 确保你的FORM标签有method="POST"。GET请求不支持多部分/表单数据上传。
  8. 确保你的文件输入标签有一个NAME属性。ID属性是不够的!ID属性用于DOM中,不用于POST有效负载。
  9. 确保你没有使用Javascript来禁用你的<input type="file">字段提交
  10. 确保你没有嵌套表格 <form><form></form></form>
  11. 检查您的HTML结构中的无效/重叠标签 <div><form></div></form>
  12. 还要确保您上传的文件中没有任何非字母数字字符。
  13. 有一次,我花了几个小时试图弄清楚为什么突然间发生这种事。事实证明,我修改了一些PHP设置.htaccess,其中一个(还不确定)导致上传失败并$_FILES成为空白。
  14. 可以尝试避免在标记_name=""属性中使用下划线()<input>
  15. 尝试上传非常小的文件以缩小它是否是文件大小问题。
  16. 检查可用磁盘空间。虽然非常罕见,: 如果$ _FILES数组突然变得神秘空,即使您的表单看起来正确,您也应该检查可用于临时文件夹分区的磁盘空间。在我的安装中,所有文件上传失败都没有警告。在咬牙切齿之后,我尝试释放额外的空间,之后文件上传突然重新开始。

扫码关注云+社区