phpweb提示:只能上传jpg、png、gif格式的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpweb提示:只能上传jpg、png、gif格式的文件相关的知识,希望对你有一定的参考价值。

phpweb提示:只能上传jpg、png、gif格式的文件
但是的确是以上格式啊 比如PNG 就 这么提示
求大神解决 不胜感激

你用的是IE吧
IE中的PNG类型是image/x-png
其他浏览器是image/png
这是浏览器的问题
希望对你有帮助
参考技术A 也许是后台识别的问题,php其实可以用GD扩展去识别图片,这样子识别图片类型,后缀就没有作用了,如果图片是jpg,你改后缀它也能够识别出你的图片是jpg。
就如@fengyunljp所说,你把PNG改成小写的试试。
参考技术B 怀疑是后缀大小写的问题
有些程序员真的可能用笨拙的方法写出程序出现大小写识别出错的bug
参考技术C 会不会尺寸太大

Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”

【中文标题】Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”【英文标题】:Laravel 4.2 throws NotReadableException "Unsupported image type. GD driver is only able to decode JPG, PNG, GIF or WebP files." 【发布时间】:2018-09-24 20:26:45 【问题描述】:

在检查了大约 20 个解决方案后,我放弃了,需要帮助。 我有 2 个 JPG 文件。两者都有适当的 mime,它们对于 upload_max_filesize 来说不是太大,名称还可以,路径也可以。每个解决方案都是针对其中一个问题。

我的问题是当我在第一张图片上运行脚本时没问题,没有错误,对象已创建:

$image1 = Image::make(public_path()."/uploads/goodimage.jpg");

参见示例: https://app.esticrm.pl/uploads/goodimage.jpg

当我在其他图片上运行它时出现错误:

$image2 = Image::make(public_path()."/uploads/badimage.jpg");

参见示例: https://app.esticrm.pl/uploads/badimage.jpg

错误信息:

Intervention\Image\Exception\NotReadableException 不支持 图像类型。 GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。

Windows 和 Linux 上的情况相同。我检查过的每个图形程序和浏览器都打开了文件。 这些问题在 PHP 从 5.5.x 升级到 5.6.35 后开始出现。以前还好。

【问题讨论】:

dd(public_path()."/uploads/goodimage.jpg") JPEG 流使用什么类型的帧? @user3344003 你的意思是 GD 还是 imagick?像错误一样,GD。 顺序、基线、渐进或其他。 我的 webapp 的每个用户都会创建和上传 JPEG,我不会告诉他们如何存储图片。它应该存储每种类型的流,就像在 5.5.x 中一样。 PHP更新后没有,我正在寻找解决方案。 【参考方案1】:

好的,我找到了解决方案:

$image2 = Image::make(file_get_contents(public_path()."/uploads/badimage.jpg"));

也适用于表单中的文件对象:

$image2 = Image::make(file_get_contents(Input::file('upload_file'));

【讨论】:

【参考方案2】:

我遇到了同样的问题,我的解决方法是下一个。 我不得不更改 nginx 允许用户在 /etc/nginx.conf 中上传的大小,如下所示:

 http 
    client_max_body_size 100M;
 

我还必须更改我的 php.ini,以增加上传文件的大小和总大小:

upload_max_filesize = 4M
post_max_size = 16M

希望能帮助到别人

【讨论】:

【参考方案3】:

更改 php.ini 文件中的以下变量

post_max_size = 128M
upload_max_filesize = 128M

打印 phpinfo() 以找到您的 php.ini 位置。

如果它的 cpanel 在软件部分->php 版本-> 点击“切换到 PHP 选项”。然后更改值。 还将max_execution_time 更改为600

【讨论】:

【参考方案4】:

如果您正在下载远程图像并将其与Image:: 一起使用,请确保正确下载了该图像。有时当您使用file_get_contens() 时,图像不会被下载或大小为 0。 所以下载远程图像的更好方法是使用 CURL,但在这种情况下,您必须确保远程 url 是 https

 $content = $this->url_get_contents(str_replace('http://','https://',$remote_img_path));

url_get_contents() 是 curl 获取远程图像的地方 正如 floyk.com 上所解释的: https://floyk.com/en/post/laravel-unsupported-image-type-gd-driver-is-only-able-to-decode-jpg-png-gif-or-webp-files

【讨论】:

以上是关于phpweb提示:只能上传jpg、png、gif格式的文件的主要内容,如果未能解决你的问题,请参考以下文章

怎样把图片转换成 gif,png,jpg,jpeg格式

laravel 使用常见问题记录

Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”

在 PHP 中将 JPG/GIF 图像转换为 PNG?

基于GDAL库图像读写——涉及(tif/tiff/bmp/jpg/png/gif等)多种格式图像的I/O

谁能推荐一个免费的电子相册,要求容量大(无限容量最好!),单次上传最好不限制,运行要稳定的!