我正在运行getimagesize()来确定上传的文件是否是有效的图像,以及它的mime类型。我的webapp的一个用户报告说,他的一些图片在上传后出现了“无效文件类型”错误。所以我让他寄给我一些。
错误字符串本身没有意义,因为它只是我在函数失败时编写的一般文本(返回FALSE)。我试图增加php的内存限制,但没有成功。而且,日志没有显示任何异常。文件有问题吗?还是别的什么问题?有没有更好的方法来做这个手术?
我接受任何getimagesize()接受的文件(意味着它有宽度/高度),我只是检查它不返回FALSE(尽管我的实际作用域是jpg jpeg png gif bmp tif tiff)。服务器正在运行php/5.2.6-1+lenny3。我重复一遍,这只发生在图像链接和其他一些来自同一系列,所以我更倾向于认为它是有关什么蜥蜴暗示。
$_FILES在进入getimagesize($_FILES['Filedata']['tmp_name'])之前似乎是空的,因此从未真正检查过该文件。我必须弄清楚为什么这些文件没有像其他文件一样提交(可能对php来说太大了?有什么想法吗?).

最佳答案

除非你提供更多的信息,否则我真的帮不上忙。以下代码:

$file = "http://img27.imageshack.us/img27/9159/dsc00799e.jpg";
$info = getimagesize($file);

echo "<pre>" . print_r($info,true) . "</pre>";

(其中$file等于问题中给出的图像的位置),输出:
Array
(
    [0] => 2736
    [1] => 3648
    [2] => 2
    [3] => width="2736" height="3648"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

看来没问题。我猜你支票上的其他地方有错吧?

09-18 16:06