2009-10-26 50 views
2

我试图通过PHP脚本获取上传的文件,但是我的$ _FILES数组总是空的?文件HTML输入元素的$ _POST数据条目具有文件名...我的本地系统上只创建了任何文件。

我已验证对临时文件夹的写入权限以及明确设置它的权限。我已经检查过phpinfo()以确保文件上传已启用,并且它们是。

有什么可以阻止呢? mod_rewrite会导致什么?

谢谢!

回答

14

当你有适当的加密类型(<form method="post" enctype="multipart/form-data">),然后检查$ _FILES errno变量,也有失败的各种可能原因。典型值是超过MAX_FILE_SIZE。

http://php.net/manual/en/features.file-upload.errors.php

自PHP 4.2.0,PHP返回与 文件阵列沿 适当的错误代码。在由PHP上传文件 期间创建的文件 数组的错误段中可能出现错误代码 。换句话说, 错误可能在 $ _FILES ['userfile'] ['error']中找到。

UPLOAD_ERR_OK值:0;没有 错误,文件上传成功。

UPLOAD_ERR_INI_SIZE值:1; 上传的文件超出了php.ini中 中的 upload_max_filesize指令。

UPLOAD_ERR_FORM_SIZE值:2; 上传的文件超出了HTML表单中指定的 MAX_FILE_SIZE指令 。

+0

print_r($ _ FILES)result in array()... 因此,不幸的是,该数据不可用。然而,我的表单中有enctype =“multipart/form-data”。 – 2009-10-27 03:59:19

+0

我仔细看了一下 - 奇怪的是在较低分辨率的屏幕上使它更有趣 - 而且我的代码中存在拼写错误。 考虑到我在找到这个时候发现的头几个解决方案中的一些说“注意输入错误”,这更加具有讽刺意味。所以......简单地说......这里排队很多,注意输入错误!感谢所有踢在裤子里的人:) – 2009-10-27 04:02:57

12

您是否在表单中定义了enctype?

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

如果没有设置,则不会上传任何文件。

+0

是的,我回答一个非常古老的线程,但是这是我的确切的错误及解决方案。 – 2013-04-02 21:25:54

3

表单是否有正确的文本类型?

enctype="multipart/form-data"