webp文件上传格式转换前端解决方案及php端解决方案
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端解决方案相关推荐
- 【文件上传绕过】——前端检测_前端js验证漏洞
文章目录 一.实验目的: 二.工具: 三.实验环境: 四.实验目的: 五.漏洞说明: 1. 漏洞原理: 2. `js前端验证`过程代码: 六.实验过程: 1. 判断是否存在前端`js绕过漏洞`: 1. ...
- 窗口限制文件上传格式
我们在选择文件上传的时候,一般都会做文件格式限制(前后台都做). <form><input type="file" name="pic" id ...
- JAVA 文件上传格式限制_关于servlet文件上传限制文件大小的问题,求高手帮忙
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先,能上传900多K的文件1M以上的文件上传不了,我也试着修改限制文件上传的大小,但是设置完了,还是有错误,代码和错误如下: upload2 DiskF ...
- accept限制文件上传格式
accept上传格式限制 1.上传.csv格式的 <input text="file" accept=".csv" /> 2.上传.xls格式 &l ...
- ios html5 文件上传,【Web前端问题】上传文件使用axios发送FormData数据,参数为空...
上传文件使用axios发送数据,参数为空 const uploadInput = document.getElementById('uploadBtn'); let param = new windo ...
- php文件上传格式限制,如何在PHP中限制文件上传类型的文件大小?
我有一个上传表单,正在检查文件大小和文件类型,以将上传的文件限制为2 MB,以及.pdf,.jpg,.gif或.png文件类型.我的目标是在用户违反这些规则之一的情况下向他们显示警报消息. 有四种方案 ...
- Android开发文件上传格式,(android开发)使用okhttp上传文件
开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片. 使用okhttp会是一个很好的选择.它使用很简单,而且运行效率也很高. 首先,在 app/build.gradle 的 ...
- webp文件如何进行格式转换
最近发现下载的webp文件无法放在PPT中. 使用https://www.aconvert.com/cn/image/webp-to-jpg 这个网址,即可进行转换 而不需要复杂的修改系统的环境变量等 ...
- java 文件上传格式,javaweb中的文件上传(以2进制格式上传)
html:前台:简单的一个上传界面,可以浏览上传的文件,可以上传各种文件,前台没有验证,如过需要安全验证,可以在js中加验证 abc.jsp: js: function imp(){ var form ...
最新文章
- ubuntu20.04安装搜狗输入法(社区版+个人版)
- 用递归实现字符数组的反转
- 计算机启动完成后操作系统负责管理的是,终极:如果计算机启动后无法进入系统,旧驱动程序会教您如何处理...
- wordpress数据库表详解
- 最近做项目的一些关于重构方面的总结
- ubuntu 14.04 LTS(64bit) Anacoda2环境下安装gensim
- linux oracle 删除为空的dbf,Linux上Oracle误删除一个没有用的dbf表空间文件
- python反转一个三位数_反转Python整数的位
- 白话空间统计三十:地统计学(1)起源
- 一、信号处理 ——3.维纳滤波(含matlab代码)
- EasyX实现按钮效果
- weblogic 安装部署
- java判断输入大写字母,java用ascii码判断输入的是大写字母,小写字母还是数字...
- #深入分析# pandas中使用 drop 和 del删除列数据的区别
- C++ 解9*9数独 LeetCode37题
- Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
- 支气管分割并3D展示效果
- 视频聊天网站的技术与发展
- 一个登录的自动化测试用例(新手)
- Java-Quartz定时器