webp文件上传到服务端后,本来所有的图片文件都使用的GD库进行尺寸压缩,但getimagesize函数获取webp文件信息失败,导致脚本运行异常中断

尝试了两种解决方案

1.前端监听文件选择后,将文件直接通过canvas转换成base64编码后提交,后端另存成png文件

function convertImgToBase64(input, callback) {var file=input.files[0],url = null;if (window.createObjectURL != undefined) {url = window.createObjectURL(file);} else if (window.URL != undefined) {url = window.URL.createObjectURL(file);} else if (window.webkitURL != undefined) {url = window.webkitURL.createObjectURL(file);}var canvas = document.createElement('CANVAS'),ctx = canvas.getContext('2d'),img = new Image;img.onload = function() {canvas.height = img.height;canvas.width = img.width;ctx.drawImage(img, 0, 0);var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();var dataURL = canvas.toDataURL('image/' + ext);callback(dataURL);};img.src = url;
}$('#input').on('change',function(){convertImgToBase64(this, function(imgdata){//dosomething})
});

2.文件上传后,读取文件前16字节判断是否包含webp字符串,有则判定为webp文件,用GD库进行转换,转换为jpeg或png格式保存,但这个方法转换的图片前后有变化,有知道怎么搞的请留言给我,多谢

$file='a.webp';
$newfile='a.jpeg';
if(strpos(strtolower(file_get_contents('.' . $file,false,null,0,16)), 'webp')){if($webp = imagecreatefromwebp('.' . $file)){imagejpeg($webp,'.' . $newfile,100);imagedestroy($webp);}
}

webp文件上传格式转换前端解决方案及php端解决方案相关推荐

  1. 【文件上传绕过】——前端检测_前端js验证漏洞

    文章目录 一.实验目的: 二.工具: 三.实验环境: 四.实验目的: 五.漏洞说明: 1. 漏洞原理: 2. `js前端验证`过程代码: 六.实验过程: 1. 判断是否存在前端`js绕过漏洞`: 1. ...

  2. 窗口限制文件上传格式

    我们在选择文件上传的时候,一般都会做文件格式限制(前后台都做). <form><input type="file" name="pic" id ...

  3. JAVA 文件上传格式限制_关于servlet文件上传限制文件大小的问题,求高手帮忙

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先,能上传900多K的文件1M以上的文件上传不了,我也试着修改限制文件上传的大小,但是设置完了,还是有错误,代码和错误如下: upload2 DiskF ...

  4. accept限制文件上传格式

    accept上传格式限制 1.上传.csv格式的 <input text="file" accept=".csv" /> 2.上传.xls格式 &l ...

  5. ios html5 文件上传,【Web前端问题】上传文件使用axios发送FormData数据,参数为空...

    上传文件使用axios发送数据,参数为空 const uploadInput = document.getElementById('uploadBtn'); let param = new windo ...

  6. php文件上传格式限制,如何在PHP中限制文件上传类型的文件大小?

    我有一个上传表单,正在检查文件大小和文件类型,以将上传的文件限制为2 MB,以及.pdf,.jpg,.gif或.png文件类型.我的目标是在用户违反这些规则之一的情况下向他们显示警报消息. 有四种方案 ...

  7. Android开发文件上传格式,(android开发)使用okhttp上传文件

    开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片. 使用okhttp会是一个很好的选择.它使用很简单,而且运行效率也很高. 首先,在 app/build.gradle 的 ...

  8. webp文件如何进行格式转换

    最近发现下载的webp文件无法放在PPT中. 使用https://www.aconvert.com/cn/image/webp-to-jpg 这个网址,即可进行转换 而不需要复杂的修改系统的环境变量等 ...

  9. java 文件上传格式,javaweb中的文件上传(以2进制格式上传)

    html:前台:简单的一个上传界面,可以浏览上传的文件,可以上传各种文件,前台没有验证,如过需要安全验证,可以在js中加验证 abc.jsp: js: function imp(){ var form ...

最新文章

  1. ubuntu20.04安装搜狗输入法(社区版+个人版)
  2. 用递归实现字符数组的反转
  3. 计算机启动完成后操作系统负责管理的是,终极:如果计算机启动后无法进入系统,旧驱动程序会教您如何处理...
  4. wordpress数据库表详解
  5. 最近做项目的一些关于重构方面的总结
  6. ubuntu 14.04 LTS(64bit) Anacoda2环境下安装gensim
  7. linux oracle 删除为空的dbf,Linux上Oracle误删除一个没有用的dbf表空间文件
  8. python反转一个三位数_反转Python整数的位
  9. 白话空间统计三十:地统计学(1)起源
  10. 一、信号处理 ——3.维纳滤波(含matlab代码)
  11. EasyX实现按钮效果
  12. weblogic 安装部署
  13. java判断输入大写字母,java用ascii码判断输入的是大写字母,小写字母还是数字...
  14. #深入分析# pandas中使用 drop 和 del删除列数据的区别
  15. C++ 解9*9数独 LeetCode37题
  16. Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
  17. 支气管分割并3D展示效果
  18. 视频聊天网站的技术与发展
  19. 一个登录的自动化测试用例(新手)
  20. Java-Quartz定时器

热门文章

  1. 墙面有几种装修方法_装修时墙面处理都有哪几种方式?
  2. BUUCTF-刷题记录-8
  3. java 字符串加密_如何用JAVA实现字符串简单加密解密?
  4. 如何实现360度的手游安全防护?网易云易盾专家分享最新实践
  5. 超级电视与海信电视争第一,这是一场胜负已定的战争
  6. Effie:沉浸写作,创造价值
  7. thingsboard
  8. linux 内存清理 释放命令,linux 内存清理释放命令(示例代码)
  9. 组织要为每一个员工赋能
  10. java关于“随机点名器“的案例