时隔上次写博客有个把月了,主要最近一段时间上班很忙,加上带娃,各种杂碎的事情繁多,一下子一天一下子一周一下子一个月就过去了,心中也有愧疚,所以为什么说奋斗要在30岁前,因为那时候你最年轻,有活力,有时间,有精力,没房贷,没车贷,没孩子,没老婆,父母年轻,一天到晚出了上班没点P事,如果能回到五年前,说实话,我也想改变点生活状态,比如去健身,去旅行,还有大把的时间学习新知识,否则,就只能像我一样,现在有了斗志的心,却每天被柴米油盐的琐事困扰着,有些朋友会说,都是你自己给自己找借口,责任这种东西怎么说,你去付了,就是有责任感,你去负了,就是没责任感,看个人吧,至少,我喜欢我的小家庭,疼爱我的老婆,小女儿,我希望能陪她们,等到女儿睡了,基本时间就不多了,你说可以熬夜,也是个人问题吧,我有乙肝大三阳,病毒指数也是8次方级别的,医生也建议不要熬夜,我也希望健康第一位,所以,所以,哈哈哈,家家有本难念的经,好了,闲扯几句,反正都不认识,反正只是瞎bb,说正事。
除去前面一些个人原因,这次这么久更新,主要是因为这次的功能是上传头像,其实就是上传图片,这个功能在任何web开发或者是app开发都是至关重要的,导致,这里面有许多坑,我也是花了好久,查了好多资料,才顺利解决,而且你的技术选型不一样,导致很多代码不一样,网上资料也非常少,走了不少弯路,开心的是,还是解决了,还是那句老话,之所以贴代码,只是为了帮助那些需要的人,我相信在这个地球的某处还是有人被一样的问题困扰,或者说没有我那么幸运找到最终解决方案,所以自己记录,顺便做做善事。
先说逻辑吧,上传图片(或者上传文件,逻辑类似),既然我们使用的是MUI+SPRING MVC,首先我们要考虑的是,前台如何上传,我考虑过两种方式,第一种就是前台将图片转换成BASE64编码,然后mui.post直接传送到后台,后台解析BASE64编码的图片,保存,这种方法理论是可行的,缺点很明显,你上传的图片要足够小,不然那个BASE64的编码能恶心死你,所以我直接说第二种方法,就是使用H5的upload方法,字节流的方式上传图片,后台按字节流接收图片。当然为了考虑图片上传效率,和使用性价比,我们在上传前,进行压缩。代码如下:
//点击头像,弹出【拍照,从相册选择】,因为用到很多H5的函数,则在plusReady里执行
mui.plusReady(function(){
// 上传文件
var filepath;
var newUrlAfterCompress;
imgdiv.addEventListener('tap',function(){
if(mui.os.plus){
var a=[{
title:'拍照'
},{
title:'从手机相册选择'
}];
plus.nativeUI.actionSheet({
title:'修改头像',
cancel:'取消',
buttons:a
},function(b){
switch(b.index){