H5实现手机拍照和选择上传功能

1. html/ js代码:

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content="initial-scale=1.0, user-scalable=no"> <meta content="yes"> <meta content="black"> <meta http-equiv="Access-Control-Allow-Origin" content="*" /> <link href="" > <link type="text/css" href="" /> <link type="text/css" href="" /> <link type="text/css" href="" > </head> <body> <div> <div> <img /> <label for="myFile"> <span></span> </label> <input type="file" capture="camera" onchange="upload('#myFile', '#img');" /> </div> </div> <script src=""></script> <script src=""></script> <script src="" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> /**拍照 * @param {Object} c * @param {Object} d */ var upload = function(c, d) { "use strict"; var $c = document.querySelector(c), $d = document.querySelector(d), file = $c.files[0], picPath = $c.value, reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e) { $d.setAttribute("src", e.target.result); }; localStorage.setItem('picPath', picPath); }; </script> </html>

2. 参数解析:

1. accept 属性(允许上传两种文件类型:gif 和 jpeg)  
 2. capture 捕获到系统默认的设备,有三个参数值可设置
 3. camera--照相机;camcorder--摄像机; microphone--录音  
 4. js代码做了封装, 参数一表示 "选择文件"的 id,参数二表示 "显示图片" 的 id,
 5. 若是 ios 只能调用摄像头,不能选择打开相册的话,就把这个【capture="camera"】去掉,直接加一个属性 multiple
 6. file 表示你选中的那个图片,然后它里面有几个属性 name、size、type、slice等,也都非常实用,
 7. FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。
 8. 调用 FileReader 的 readAsDataURL 接口,将启动异步加载文件内容,通过给 reader 监听一个 onload 事件,
 9. 将数据加载完毕后,在onload事件处理中,通过 event 的 result 属性即可获得文件内容,然后扔进 img 的 src 即可 打开图片并预览。

3. 效果展示:

点击拍照的图标,如果在web端就是浏览文件上传,手机端可进行拍照功能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c2f2e8beed006e21b040b647f89bd5cd.html