首页 » PHP教程 » phpajaxblobjpg技巧_技能干货前端工程师看过来一种Ajax缩放图片上传的办法

phpajaxblobjpg技巧_技能干货前端工程师看过来一种Ajax缩放图片上传的办法

访客 2024-11-10 0

扫一扫用手机浏览

文章目录 [+]

本文作者:上海驻云开拓履行工程师 方舟

以下正文

phpajaxblobjpg技巧_技能干货前端工程师看过来一种Ajax缩放图片上传的办法

最近做的运用里面有上传图片的功能,由于图片直接丢进阿里云OSS,以是不想通过做事器端程序来写缩放功能,查了一下找到一篇文章,点我 ,这篇总体步骤来说是OK的,但是里面有好多坑。
本来准备把上传的独立一篇写出来的,后来创造太短,加到后面吧。
PS:想直接看完全可以用版代码的请直接拖到最下。

phpajaxblobjpg技巧_技能干货前端工程师看过来一种Ajax缩放图片上传的办法
(图片来自网络侵删)

首先创建Img并画到Canvas上这一步,他的代码连起来是这样的:

但是这样写Canvas里面什么都不会涌现,我昨天跟这段代码战斗了小半天,才创造他该当改成:

这是由于Javascript是异步调用的,正序实行的时候img还没画出来,ctx.drawImage已经调用了,导致什么效果都有。

上面那段代码的末了一句也是个坑,在Chrome,Safari下都报错,实在该当写成:

然后要将Canvas转换成文件来上传,这篇写了这两个方法:

然而实际上mozGetAsFile只有Firefox支持,所以为了兼容Chrome跟Safari我去查了一下dataurl怎么用。
这个原文就找不到了,也被坑了一次,搜索到的前几条好多BlobBuilder的,这玩意不知道什么时候就deprecated了,最新版的Chrome跟Safari都没这类,终极找到了一个ArrayBuffer直接转换blob的代码:

这段代码在Chrome里面用的毫无问题,但是Safari天生的blob只有十几字节,这明显不科学。
MDN Blob 上查到可以直接把ArrayBuffer传到Blob布局函数里面,于是就变成了

现在圆满了,就剩一个小问题,Chrome下会提示把ArrayBuffer传入Blob布局函数的行为deprecated了。

接下来便是文件上传了,用到了jQuery。

这个没啥坑,有个小问题,按之前的办法天生的Blob拿过来上传的时候在Firefox里面无法显示Progress,该当是Firefox只有上传文件才有prgress事宜。

以下是完全可用代码:

好啦 ~ ~ ~ 本文到这里也就结束啦 ~ 如果还希望理解更多干系知识的话,就赶紧订阅我们吧~每天新鲜干货送上呦 ~

标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读1 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读1 评论0