H5實現(xiàn)手機拍照和選擇上傳功能
本文實例為大家分享了H5手機拍照和選擇上傳的具體代碼,供大家參考,具體內(nèi)容如下
1. html/ js代碼:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<link rel="stylesheet" href="../../css/mui.min.css" >
<link rel="stylesheet" type="text/css" href="../../css/app.css" />
<link rel="stylesheet" type="text/css" href="../../css/icons-extra.css" />
<link rel="stylesheet" type="text/css" href="../../css/mui.picker.min.css" >
</head>
<body onload="startTime()">
<div class="mui-card" style="height: 20%;">
<div class=" mui-card-media">
<img class="a" id="img" />
<label for="myFile">
<span id="format" class="a mui-icon mui-icon-camera" style="font-size: -webkit-xxx-large;"></span>
</label>
<input style="display: none;" type="file" capture="camera" id="myFile" onchange="upload('#myFile', '#img');" />
</div>
</div>
<script src="../../js/mui.js"></script>
<script src="../../js/mui.picker.min.js"></script>
<script src="../../js/host.js" 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. 參數(shù)解析:
1. accept 屬性(允許上傳兩種文件類型:gif 和 jpeg)
2. capture 捕獲到系統(tǒng)默認的設(shè)備,有三個參數(shù)值可設(shè)置
3. camera--照相機;camcorder--攝像機; microphone--錄音
4. js代碼做了封裝, 參數(shù)一表示 "選擇文件"的 id,參數(shù)二表示 "顯示圖片" 的 id,
5. 若是 ios 只能調(diào)用攝像頭,不能選擇打開相冊的話,就把這個【capture="camera"】去掉,直接加一個屬性 multiple
6. file 表示你選中的那個圖片,然后它里面有幾個屬性 name、size、type、slice等,也都非常實用,
7. FileReader作為文件API的重要成員用于讀取文件,根據(jù)W3C的定義,F(xiàn)ileReader接口提供了讀取文件的方法和包含讀取結(jié)果的事件模型。
8. 調(diào)用 FileReader 的 readAsDataURL 接口,將啟動異步加載文件內(nèi)容,通過給 reader 監(jiān)聽一個 onload 事件,
9. 將數(shù)據(jù)加載完畢后,在onload事件處理中,通過 event 的 result 屬性即可獲得文件內(nèi)容,然后扔進 img 的 src 即可 打開圖片并預(yù)覽。
3. 效果展示:
點擊拍照的圖標(biāo),如果在web端就是瀏覽文件上傳,手機端可進行拍照功能。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js onmousewheel事件多次觸發(fā)問題解決方法
做一個首屏和第二屏之間滾動鼠標(biāo)滾輪就可以整平切換的效果,遇到了很多問題,下面是問題解決方法2014-10-10
ant-design-pro使用qiankun微服務(wù)配置動態(tài)主題色的問題
這篇文章主要介紹了ant-design-pro使用qiankun微服務(wù)配置動態(tài)主題色,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
多個jquery.datatable共存,checkbox全選異常的快速解決方法
這篇文章主要介紹了多個jquery.datatable共存,checkbox全選異常的快速解決方法。需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
JavaScript實現(xiàn)手寫循環(huán)滑動效果
最近一直在做業(yè)務(wù),遇到一個需求是頁面頂部需要展示圖片,可以拖動,拖動到最后一張的時候需要無縫切換到第一張,從而實現(xiàn)循環(huán)滑動,所以本文就來和大家分享一下實現(xiàn)方法2023-05-05
promise和co搭配生成器函數(shù)方式解決js代碼異步流程的比較
這篇文章主要介紹了promise和co搭配生成器函數(shù)方式解決js代碼異步流程的比較,在es6中引入的原生Promise為js的異步回調(diào)問題帶來了一個新的解決方式co模塊搭配Generator函數(shù)的同步寫法,更是將js的異步回調(diào)帶了更優(yōu)雅的寫法。感興趣的小伙伴們可以參考一下2018-05-05

