php 接收mui的上传文件,利用HTML5+的API实现基于MUI的文件上传_dssy的一点儿笔记_新浪博客...

89831265f9a80ec94429b6bbbaec91cc.png0e3ea6bd97d7c2dd9d5683a911f062c5.png利用HTML5+的API实现基于MUI的文件上传_dssy的一点儿笔记_新浪博客,dssy的一点儿笔记,

项目中需要用到图片上传,昨天搞整了一下,对我这个菜鸟来说,还是有很多值得注意的地方。

h5+提供了可以调用原生安卓API的功能,当然也能调用camera。需要注意的是,拍照后的保存路径如果不自己设置的话,是使用的hbuilder默认的路径。不过,我把路径打印出来,在genymotion里面居然没有翻到。还有一点,通过h5+调用拍照后照片也不会保存到相册​,但是在真机上是会自动保存的,为了以防万一,可以设置图片保存到本地相册。不多说,贴代码。

3a9111b135acc3451b22813380647f76.png页面打开时需要在plus中预加载,这里新建文件夹camera

plus.camera.getCamera返回摄像头管理对象,之后可以对拍照参数进行设置,拍照成功会调用回调函数。使用resolveLocalFileSystemURL可以通过URL参数获取目录对象或文件对象,把entry转换成本地路径之后就可以保存啦。

76b5f95c39ee4e955f4fa1cb75681f46.png拍摄照片

通过相册选择照片的方式和获取摄像头的操作差不多,在这里我给了一个f1的全局数组变量。用来存放选择的照片。哦,单选的话就不用数组了可以。多选和单选,可以通过GalleryOptions对象来进行设置:multiple: true.还可以进行好多好多设置。

1cfd8337a128c77aee579c9d3509acc1.png相册选择照片

好了现在可以进行图片上传了,在这里使用的是二进制流的形式进行上传,同时为了节约资源,有必要对图片进行压缩,这个代码我是扒的DCould论坛上面的。利用canvas对图片进行重绘,要压缩多小,修改w = 320 || w;的数字就行了,我这里是320,300多K的图片传到后台也就150K了。不过可以更小,最好注意按比例压缩。哦,这里是需要导入

93003c1a8f8b327e0771d4a3247b1670.png压缩图片

好了可以上传啦,上传利用的是mui封装的post方法,跟ajax其实是一样的。h5+其实提供了很多上传方法,比如有一个uploader的接口,也可用来上传,

8b1349eff8604d42395019c0936746df.png上传

接下来就是后台接收了,在这里使用的是mvc,前端直接请求action,返回图片数组,在转换成图片之前,base64的格式需要把开头一段去掉。不然会报格式错误的。在保存进文件夹的时候,之前代码老是报错:GDI+中发生一般性错误,就是这个。在网上搜索了好久,解决办法为克隆一个bitmap对象,同时Dispose来及时释放掉打开的文件(

5a839fe39fe2d7d7c23aabbe29ed52e1.png

贴一个克隆bitmap的方法,与这次的图片上传没啥关系,留着以后能用到。

5bc22310b638063e146cc15f41e58903.pngbitmap转换

​       最后,我还要感谢老大,以及其他小伙伴,在工作中给了我很多帮助,有这么一群小伙伴在一起真的太好啦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值