某些图像上的php图像文件上传失败

时间:2014-09-17 01:08:18

标签: php image

我在这里使用ImageManipulator.php库:https://gist.github.com/philBrown/880506

上传部分图片时,出现以下错误:

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Image file C:\inetpub\wwwroot is not readable' in C:\inetpub\wwwroot\libraries\image-library.php:62 Stack trace: #0 C:\inetpub\wwwroot\images\edit-image.php(55): ImageManipulator->setImageFile('C:\inetpub\wwwr...') #1 .{main} thrown in C:\inetpub\wwwroot\libraries\image-library.php on line 62

引用的函数是:

if (!(is_readable($file) && is_file($file))) {
   throw new InvalidArgumentException("Image file $file is not readable");
}

随着图像的随机选择会发生这种情况,但如果发生这种情况,则会继续发生该图像,因此并非完全随机。如果我在Paint中打开图像并使用不同的名称保存它,它就可以工作。它与图像大小无关,因为我的图像只有14 kb时出现此错误。

有没有人知道出了什么问题?

例如:

This Image does NOT work

上面的图片不起作用,但下面的图片不起作用。

This image works.

1 个答案:

答案 0 :(得分:0)

感谢您的帮助,指出了我正确的方向。事实证明,所有失败的文件都有大写字母扩展名(.JPG)和有效的文件都有小写扩展名(.jpg)。每当我在paint中编辑一个文件时,它都会用小写扩展名保存它。在代码的某处,我使用数组筛选可接受的扩展,并且数组仅包含小写扩展。我在比较中添加了strtolower,它似乎正在工作。解决方案:

// array of valid extensions $validExtensions = array('.jpg', '.jpeg', '.gif', '.png'); // get extension of the uploaded file $fileExtension = strtolower(strrchr($_FILES['fileToUpload']['name'], "."));

                     ^^^^^^^^^