手机端如何实现压缩并上传多张图片,触屏图片压缩

简介: 问题描述在做触屏项目的时候,经常会遇到多图上传的情况,比如商品评论。手机端如何实现压缩并上传多张图片第一次看到这个页面的心路历程应该是这样的:我如果放四个input[file]在那里,是可以简单的做的,但是非常呆,pass。

问题描述

在做触屏项目的时候,经常会遇到多图上传的情况,比如商品评论。


img_8857160f39d38d1bd12def763a381959.jpe
手机端如何实现压缩并上传多张图片

第一次看到这个页面的心路历程应该是这样的:

  • 我如果放四个input[file]在那里,是可以简单的做的,但是非常呆,pass。不过要是老板天天催进度,随时准备干完就走,那这种方式是首选!(我经常看到有些培训班在教这种模式)

  • 言归正传,我可以先异步的把图片一张一张的传到服务器存起来

  • 还有,我可以先把压缩过的图片先放在页面上,点击提交的时候再一起传过去

方案分析

我们先看异步传单张的方案,姑且叫方案A吧。我们用文字整理一下流程:

  1. 放一个隐藏的input[file]在页面上,监听“添加图片按钮”的点击事件

  2. 点击触发文件选择,选择之后把图片用AJAX传到服务

  3. 服务端接收,把图片存起来,再返回路径

  4. 使用路径生成缩略图,再把路径放到隐藏的input里面,等着和其他数据一起提交

部分代码示例如下:


img_e94b36fc9361d861284d4eb4cb479165.jpe
手机端如何实现压缩并上传多张图片

这种方案用的过程中会遇到这么几个问题:

  • 现在好一点的手机动不动就是25Md的图片大小,坏的情况下选择完图片之后会有35秒的延迟才能看到缩略图。此时是在等待服务器接受文件保存并返回路径。

  • 删除图片的时候需要和后端联动,点击缩略图右上角的叉叉需要用AJAX去删除服务器上的图片,同时还要删除HTML结构,增加了代码量。最可怕的是有些人每次传一堆图,又不提交,直接关闭了页面。那你的服务器上就会有一顿没有数据库对应的图片,有洁癖的同学一定注意。

再来看压缩之后一起传的方案,我们就叫他方案B吧。流程如下:

  1. 引入webuploader,这是一个由百度开发的插件,此处用localResizeIMG也是一样的,只是用来前端处理图片而已。

  2. 使用webuploader选择文件,生成缩略图,并不上传。此时的缩略图是一段base64的代码。

  3. 把base64同时放到IMG标签和INPUT标签里

  4. 提交整个表单的时候一起把图片保存了

部分代码示例如下:


img_d64108a10130059a076de3597ab9e791.jpe
手机端如何实现压缩并上传多张图片

img_cd4e028e7d06b1672ec7e07d65ecf7b5.jpe
手机端如何实现压缩并上传多张图片

这种方案目前看来体验很好,而且排序问题也可以直接在前端解决,由于图片进行了压缩,一次性提交的时候也不会有延迟。最大的问题也许就是在某些老旧安卓机上会让浏览器无响应,应该是把手机浏览器的内存给占满了,不过也是极端使用的情况。

总结

其实方案A也可以先用localResizeIMG将图片压缩再异步上传,效果和B方案基本相同。那么情况就变成:
如果你有服务器洁癖,请选择方案B
如果你的客户群体手机都不太好,请选择方案A
其他情况就看你的喜好吧


以上内容属于作者原创,特此声明,如需转载,请留言取得同意

目录
相关文章
|
6月前
|
数据采集 分布式计算 搜索推荐
使用Python实现网页中图片的批量下载和水印添加保存
使用Python实现网页中图片的批量下载和水印添加保存
|
2月前
|
PHP
网站三合一缩略图片介绍展示源码
网站三合一缩略图片介绍展示源码
54 3
网站三合一缩略图片介绍展示源码
|
计算机视觉
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
|
移动开发 前端开发 JavaScript
【移动端】实现相册的上传和缩放裁剪
做项目时,在移动端,需要实现用户相册图片的上传,并对图片进行缩放裁剪的功能。下面说一下实现流程。
160 1
【移动端】实现相册的上传和缩放裁剪
|
计算机视觉
【方便的Opencv】实现图片合成视频+附带图片生成gif
【方便的Opencv】实现图片合成视频+附带图片生成gif
【方便的Opencv】实现图片合成视频+附带图片生成gif
|
JavaScript
原生js实现图片单张上传及批量上传
原生js实现图片单张上传及批量上传
|
存储 Web App开发 前端开发
移动端图片操作(一)——上传
上传我们一般都是用“input[type=file]”控件。当你用此控件时,你就授权了网页和服务器访问对应的文件,就可以得到File对象。
移动端图片操作(一)——上传
|
文件存储 Android开发 数据安全/隐私保护
Android图片添加水印图片并把图片保存到文件存储
Android图片添加水印图片并把图片保存到文件存储 package zhangphil.test; import android.
1458 0
|
前端开发 HTML5 移动开发
移动端图片上传旋转、压缩的解决方案
在手机上通过网页 input 标签拍照上传图片,有一些手机会出现图片旋转了90度d的问题,包括 iPhone 和个别三星手机。这些手机竖着拍的时候才会出现这种问题,横拍出来的照片就正常显示。
1230 0