为什么'if(!getimagesize($ _ FILES ['imagefile'] ['tmp_name']))'不起作用?

时间:2010-06-25 21:23:24

标签: php

文件上传后,为什么它总是给我假,即使它是图像?

if (!getimagesize($_FILES['imagefile']['tmp_name'])) { $boolean = false; }

顺便说一下,它给了我这个错误:
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in...

2 个答案:

答案 0 :(得分:1)

确保在对文件进行任何操作之前上传文件。只需在开发时转储$_FILES数组,例如:

echo '<pre>'; print_r($_FILES);echo '</pre>';  

您需要在enctype标记上应用<form>属性,才能上传文件。见http://www.w3.org/TR/html401/interact/forms.html#h-17.3

答案 1 :(得分:1)

首先检查上传是否实际成功:

if ($_FILES['imagefile']['error'] === UPLOAD_ERR_OK) {
   if (!getimagesize(....)) {
      ... 
   }
} else {
   die("Upload failed with error code {$_FILES['imagefile']['error']}");
}

错误常数为defined here。永远不要假设上传成功。他们只有一种方式可以工作,而且还有一百万种方式让他们失败。

鉴于getimagesize()抱怨空文件名,可以:

一个。上传失败,其原因代码将在...['error']属性中。

湾你正在检查错误的文件字段名称。如果您有<input type="file" name="image" />,那么您必须检查$_FILES['image'][...]

℃。无论出于何种原因,您的Web服务器都能够将文件写入临时目录,但没有READ权限。