mui + H5 調取攝像頭和相冊 實現圖片上傳

最近要用MUI作項目,在研究圖片上傳時 ,遇到了大坑 ,網上搜集各類資料,最終寫了一個demo,直接看代碼。參考(http://www.cnblogs.com/richerdyoung/p/6612350.html)javascript

<!DOCTYPE html>  
<html>  
    <head>  
        <meta charset="UTF-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
        <title></title>  
       <link rel="stylesheet" href="css/mui.min.css" />
       <script type="text/javascript" src="js/jquery-1.8.1.js" ></script>
        <script type="text/javascript" src="js/mui.min.js" ></script>
        <style>  
            .imageup{ width:100px; height: 36px; line-height:36px;}  
            .button{  width:100px; height: 50px; line-height:50px;}  
            ul li p{
            	display: inline-block;
            }
        </style>  
    </head>  
    <body>  
    	<ul class="list">
    		<li class='mui-table-view-cell mui-media'>
    			 <img id="headimg" class="headimg" src=''  height="150"  width="150">
		        <p><a  class="imageup 1">上傳圖片1</a> </p> 
		        <p><button onclick="upload();" class='button'> 提交</button></p>
    		</li>
    		<li class='mui-table-view-cell mui-media'>
    			 <img id="headimg" class="headimg" src=''  height="150"  width="150">
		        <p><a  class="imageup 2">上傳圖片2</a> </p> 
		        <p><button onclick="upload();" class='button'> 提交</button></p>
    		</li>
    		<li class='mui-table-view-cell mui-media'>
    			 <img id="headimg" class="headimg" src=''  height="150"  width="150">
		        <p><a class="imageup 3">上傳圖片3</a> </p> 
		        <p><button onclick="upload();" class='button'> 提交</button></p>
    		</li>
    	</ul>
       
        <script>  
                 
                 //擴展API完成後執行的操做
            	function plusReady(){                
                 //給選中的li增長判別class
                  	$(".list li").on("tap",".imageup",function(){
                 	alert('11');
                	var $li = $(this).parents("li");
                     console.log($($li).text())               	
                	$li.addClass("selectLi");
                	$li.siblings().removeClass("selectLi");               
					 page.imgUp();
	                })
	            }  
            
	            //彈出系統按鈕選擇框
	            var page=null;  
	            page={  
	                imgUp:function(){  
	                    var m=this;  
	                   /* console.log(m);*/
	                    plus.nativeUI.actionSheet({cancel:"取消",buttons:[  
	                        {title:"拍照"},  
	                        {title:"從相冊中選擇"}  
	                    ]}, function(e){//1 是拍照  2 從相冊中選擇  
	                        switch(e.index){  
	                            case 1:appendByCamera();break;  
	                            case 2:appendByGallery();break;  
	                        }  
	                    });  
	                }  
	            }  
              
            // 拍照添加文件
            function appendByCamera(){
                plus.camera.getCamera().captureImage(function(e){
                    console.log("e is" +  e);
                    plus.io.resolveLocalFileSystemURL(e, function(entry) { 
	                    var path = entry.toLocalURL(); 
	                    var indexa = liIndex()
	                    console.log(indexa);
	                    $(".headimg")[indexa].src = path;                 
                    }, function(e) { 
                        mui.toast("讀取拍照文件錯誤:" + e.message); 
                    }); 
    
                });    
            }
            // 從相冊添加文件
            function appendByGallery(){
                plus.gallery.pick(function(path){
                	var indexa = liIndex();
                    console.log(indexa);
                    $(".headimg")[indexa].src = path; 
                });
            }
            
              
            //服務端接口路徑
            var server = "http://www.test.cn/aaa.php";
            //獲取圖片元素
            var files = document.getElementById('headimg');
            // 上傳文件
            function upload(){
                var wt=plus.nativeUI.showWaiting();
                var task=plus.uploader.createUpload(server,
                    {method:"POST"},
                    function(t,status){ //上傳完成
                        if(status==200){
                            alert("上傳成功:"+t.responseText);
                            wt.close(); //關閉等待提示按鈕
                        }else{
                            alert("上傳失敗:"+status);
                            wt.close();//關閉等待提示按鈕
                        }
                    }
                );   
                //添加其餘參數
                task.addData("name","test");
                task.addFile(files.src,{key:"dddd"});
                task.start();
            }  
            
       
             
             //判斷點擊的是上傳的第幾個li              
             function liIndex(){
             	var lis = $(".list").children(); 
             	console.log(lis.length)
             	for(var i = 0; i < lis.length;i++){  
             		console.log($(lis[i]).attr("class"))
             		var lisClass = $(lis[i]).attr("class").split(" ");
             		if(lisClass[2] == "selectLi"){
            			console.log(i);
            			return i;
            		}
             	}
             }
            
            
          //擴展API是否準備好,若是沒有準備好則監聽plusReady  
         if(window.plus){
                plusReady();
            }else{
                document.addEventListener("plusready",plusReady,false);
            }
         
        </script>  
    </body>   
</html> 

關鍵是最後,重點來了,普通瀏覽器裏沒有plus環境,只有HBuilder真機運行、打包後、或流應用環境下才能運行plus api。
也就是說個人上傳圖片的案例放在微信端是不執行的(我我的測出的結果,不表明絕對)。因此,我又趕(bu)緊(de)的(bu)改變了策略,去研究微信自帶的調取攝像頭和相冊來實現圖片上傳功能,這個能夠去看微信公衆平臺的開發者文檔,內容都比較全。php

最後,若是你們對mui 的調取攝像頭和相冊實現圖片上傳有什麼好的想法,歡迎補充~~~~css

相關文章
相關標籤/搜索