HTML5 Plus 完成手机上APP照相或相册挑选照片提交作

日期:2021-02-27 类型:科技新闻 

关键词:html网页制作,php网页制作,网页设计稿,网页编辑工具,学生网页设计模板

运用HTML Plus的Camera、GalleryIO、Storage和Uploader来完成手机上APP照相或从相册挑选照片提交。Camera控制模块管理方法机器设备的摄像头,能用于照相、摄像实际操作,根据plus.camera获得摄像头管理方法目标。Gallery控制模块管理方法系统软件相册,适用从相册选中择照片或视頻文档、储存照片或视頻文档到相册等作用。根据plus.gallery获得相册管理方法目标。IO控制模块管理方法当地文档系统软件,用于对文档系统软件的文件目录访问、文档的载入、文档的写入等实际操作。根据plus.io可获得文档系统软件管理方法目标。Storage控制模块管理方法运用当地数据信息储存区,用于运用数据信息的储存和载入。运用当地数据信息与localStorage、sessionStorage的差别在于数据信息合理域不一样,前者可在运用内跨域实际操作,数据信息储存期是长久化的,而且沒有容量限定。根据plus.storage可获得运用当地数据信息管理方法目标。Uploader控制模块管理方法互联网提交每日任务,用于从当地提交各种各样文档到服务器,并适用跨域浏览实际操作。根据plus.uploader可获得提交管理方法目标。Uploader提交应用HTTP的POST方法递交数据信息,数据信息文件格式合乎Multipart/form-data标准,即rfc1867(Form-based File Upload in HTML)协议书。 

XML/HTML Code拷贝內容到剪贴板
  1. <!doctype html>  
  2. <html class="feedback">  
  3.  <head>  
  4.   <meta charset="utf⑻" />  
  5.   <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />  
  6.   <meta name="misapplication-tap-highlight" content="no" />  
  7.   <meta name="HandheldFriendly" content="true" />  
  8.   <meta name="MobileOptimized" content="320" />  
  9.   <title>HTML5 Plus 照相或相册挑选照片提交</title>  
  10.   <link rel="stylesheet" href="../../css/mui.min.css">  
  11.   <link rel="stylesheet" type="text/css" href="../../css/app.css" />  
  12.   <link rel="stylesheet" type="text/css" href="../../css/iconfont.css" />  
  13.   <link rel="stylesheet" type="text/css" href="../../css/feedback-page.css" />  
  14.   <link rel="stylesheet" href="../../css/font-awesome.min.css">  
  15.   <script src="../../js/jquery.js"></script>  
  16.   <script type="text/javascript" src="../../js/common.js"></script>  
  17.   <script type="text/javascript" src="../../js/utitls.js"></script>  
  18.   <script type="text/javascript" src="http://api.map.baidu.com/api?ak=59PBaEOro16CiH2W4CG81zEN&v=2.0"></script>  
  19.   <style type="text/css">  
  20.    .del {   
  21.     position: absolute;   
  22.     top:1px;   
  23.     right: 1px;    
  24.     display: block;         
  25.        line-height: 1;   
  26.        cursor: pointer;   
  27.        color:#fff;   
  28.     }   
  29.   
  30.    .del:hover {   
  31.     color:#ff3333;   
  32.    }   
  33.   </style>  
  34.   <style>  
  35.    .table-view {   
  36.     position: relative;   
  37.     margin-top: 0;   
  38.     margin-bottom: 0;   
  39.     padding-left: 0;   
  40.     list-style: none;   
  41.     background-color: #f5f5f5;   
  42.    }   
  43.       
  44.    .table-view-cell {   
  45.     position: relative;   
  46.     overflow: hidden;   
  47.     padding: 0px 15px;   
  48.     -webkit-touch-callout: none;   
  49.     margin-bottom: 1px;   
  50.    }   
  51.       
  52.    .table-view-cell:after {   
  53.     position: absolute;   
  54.     right: 0;   
  55.     bottom: 0;   
  56.     left: 0px;   
  57.     height: 1px;   
  58.     content: '';   
  59.     -webkit-transform: scaleY(.5);   
  60.     transform: scaleY(.5);   
  61.     background-color: #c8c7cc;   
  62.    }   
  63.       
  64.    .table-view-cell>a:not(.btn) {   
  65.     position: relative;   
  66.     display: block;   
  67.     overflow: hidden;   
  68.     margin: -0px ⑴5px;   
  69.     padding: inherit;   
  70.     white-space: nowrap;   
  71.     text-overflow: ellipsis;   
  72.     color: inherit;   
  73.     background-color: #75b9f4;   
  74.     height: 40px;   
  75.     line-height: 40px;   
  76.    }   
  77.       
  78.    .navigate-right:after   
  79.    {   
  80.     font-family: Muiicons;   
  81.     font-size: inherit;   
  82.     line-height: 1;   
  83.     position: absolute;   
  84.     top: 50%;   
  85.     display: inline-block;   
  86.     -webkit-transform: translateY(⑸0%);   
  87.     transform: translateY(⑸0%);   
  88.     text-decoration: none;   
  89.     color: #666;   
  90.     -webkit-font-smoothing: antialiased;   
  91.    }   
  92.       
  93.    .table-view-cell.collapse .collapse-content {   
  94.     position: relative;   
  95.     display: none;   
  96.     overflow: hidden;   
  97.     margin: 0px ⑴5px 0px;   
  98.     padding: 0px 0px !important;   
  99.     -webkit-transition: height .35s ease;   
  100.     -o-transition: height .35s ease;   
  101.     transition: height .35s ease;   
  102.     background-color: transparent;   
  103.    }   
  104.    .image-item{   
  105.     position: relative;   
  106.    }   
  107.    .image-item .info{   
  108.     position: absolute;   
  109.     top:0px;   
  110.     left:4px;   
  111.     color: #ff9900;   
  112.     font-size: 12px;         
  113.        
  114.    }   
  115.   </style>  
  116.  </head>  
  117.  <body>  
  118.   <header class="bar bar-nav">  
  119.    <h1 class="title">照相或相册挑选照片提交</h1>  
  120.   </header>  
  121.   <div class="content">  
  122.    <div style="margin-top: 10px;"></div>  
  123.    <input type="hidden" id="ckjl.id" name="ckjl.id" value="429">  
  124.      <div class="collapse-content" >  
  125.       <form>  
  126.        <label class="row-label"></label>  
  127.        <div id='F_CKJLBS' class="row image-list">  
  128.         <div class="image-item " id="F_CKJLB" onclick="showActionSheet(this);"></div>  
  129.       </div>  
  130.       </form>  
  131.      </div>  
  132.   </div>  
  133.   <script src="../../js/mui.min.js"></script>  
  134. <script>  
  135.  var procinstid = 0;   
  136.  //原始化网页页面实行实际操作   
  137.  function plusReady() {   
  138.   //Android回到键监视恶性事件   
  139.   plus.key.addEventListener('backbutton',function(){   
  140.    myclose();   
  141.   },false);   
  142.  }   
  143.  if (window.plus) {   
  144.   plusReady();   
  145.  } else {   
  146.   document.addEventListener('plusready', plusReady, false);   
  147.  }   
  148.   //载入网页页面原始化必须载入的照片信息内容   
  149.   //或相册IMG_20160704_112620.jpg   
  150.   //imgId:照片名字:90或IMG_20160704_112620   
  151.   //imgkey:字段比如:F_ZDDZZ   
  152.   //ID:站点序号ID,比如429   
  153.   //src:src="file:///storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/upload/F_ZDDZZ⑴467602809090.jpg"  
  154.   function showImgDetail (imgId,imgkey,id,src) {     
  155.    var html = "";   
  156.    html +='<div  id="Img'+imgId+imgkey+'" class="image-item ">';    
  157.    html +=' <img id="picBig" data-preview-src="" data-preview-group="1" '+src+'/>';   
  158.    html +=' <span class="del" onclick="delImg(\''+imgId+'\',\''+imgkey+'\','+id+');">';       
  159.    html +='  <div class="fa fa-times-circle"></div>';    
  160.    html +=' </span>';    
  161.    html +='</div>';   
  162.    $("#"+imgkey+"S").append(html);   
  163.   }   
  164.   //删掉照片   
  165.   //imgId:照片名字:IMG_20160704_112614   
  166.   //imgkey:字段,比如F_ZDDZZ   
  167.   //ID:站点序号ID,比如429   
  168.   function delImg(imgId,imgkey,id){   
  169.    var bts = ["是", "否"];   
  170.    plus.nativeUI.confirm("是不是删掉照片?", function(e) {   
  171.      var i = e.index;   
  172.      if (i == 0) {   
  173.       var itemname=id+"img-"+imgkey;//429img-F_ZDDZZ   
  174.       var itemvalue=plus.storage.getItem(itemname);   
  175.       //{IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ⑴467602809090.jpg}   
  176.       if(itemvalue!=null){   
  177.        var index=itemvalue.indexOf(imgId+",");   
  178.        if(index==⑴){//沒有寻找   
  179.         delImgfromint(imgId,imgkey,id,index);   
  180.        }else{    
  181.         delImgFromLocal(itemname,itemvalue,imgId,imgkey,index); //改动,加了1个index主要参数   
  182.        }   
  183.           
  184.       }else{   
  185.        delImgfromint(imgId,imgkey,id);    
  186.       }   
  187.      }   
  188.     },"查勘", bts);   
  189.    /*var isdel = confirm("是不是删掉照片?");   
  190.    if(isdel == false){   
  191.     return;   
  192.    }*/   
  193.       
  194.       
  195.   }   
  196.   function delImgFromLocal(itemname,itemvalue,imgId,imgkey,index){   
  197.      var wa = plus.nativeUI.showWaiting();   
  198.      var left=itemvalue.substr(0,index⑴);   
  199.      var right=itemvalue.substring(index,itemvalue.length);   
  200.      var end=right.indexOf("}");   
  201.      rightright=right.substring(end+1,right.length);   
  202.      var newitem=left+right;   
  203.      plus.storage.setItem(itemname,newitem);    
  204.      myAlert("删掉取得成功");   
  205.      $("#Img"+imgId+imgkey).remove();   
  206.      wa.close();   
  207.   }   
  208.   //选择照片的来源于,照相和相册   
  209.   function showActionSheet(conf){   
  210.      var divid = conf.id;   
  211.            var actionbuttons=[{title:"照相"},{title:"相册选择"}];   
  212.            var actionstyle={title:"挑选相片",cancel:"撤销",buttons:actionbuttons};   
  213.            plus.nativeUI.actionSheet(actionstyle, function(e){   
  214.               if(e.index==1){   
  215.                getImage(divid);   
  216.               }else if(e.index==2){   
  217.                galleryImg(divid);   
  218.               }   
  219.            } );   
  220.         }   
  221.   //相册选择照片   
  222.         function galleryImg(divid) {   
  223.             plus.gallery.pick( function(p){   
  224.              //alert(p);//file:///storage/emulated/0/DCIM/Camera/IMG_20160704_112620.jpg   
  225.              plus.io.resolveLocalFileSystemURL(p, function(entry) {   
  226.               //alert(entry.toLocalURL());//file:///storage/emulated/0/DCIM/Camera/IMG_20160704_112620.jpg   
  227.      //alert(entry.name);//IMG_20160704_112620.jpg   
  228.      compressImage(entry.toLocalURL(),entry.name,divid);   
  229.     }, function(e) {   
  230.      plus.nativeUI.toast("载入照相文档不正确:" + e.message);   
  231.     });   
  232.             }, function ( e ) {   
  233.             }, {   
  234.              filename: "_doc/camera/",   
  235.              filter:"image"   
  236.             } );   
  237.         }   
  238.   // 照相   
  239.   function getImage(divid) {   
  240.    var cmr = plus.camera.getCamera();   
  241.    cmr.captureImage(function(p) {   
  242.     //alert(p);//_doc/camera/90.jpg   
  243.     plus.io.resolveLocalFileSystemURL(p, function(entry) {   
  244.      //alert(entry.toLocalURL());//file:///storage/emulated/0/Android/data/io.dcloud...../doc/camera/90.jpg   
  245.      //alert(entry.name);//90.jpg   
  246.      compressImage(entry.toLocalURL(),entry.name,divid);   
  247.     }, function(e) {   
  248.      plus.nativeUI.toast("载入照相文档不正确:" + e.message);   
  249.     });   
  250.    }, function(e) {   
  251.    }, {   
  252.     filename: "_doc/camera/",   
  253.     index: 1   
  254.    });   
  255.   }   
  256.   //缩小照片   
  257.   function compressImage(url,filename,divid){   
  258.    var name="_doc/upload/"+divid+"-"+filename;//_doc/upload/F_ZDDZZ⑴467602809090.jpg   
  259.    plus.zip.compressImage({   
  260.      src:url,//src: (String 种类 )缩小变换初始照片的相对路径   
  261.      dst:name,//缩小变换总体目标照片的相对路径   
  262.      quality:20,//quality: (Number 种类 )缩小照片的品质.赋值范畴为1⑴00   
  263.      overwrite:true//overwrite: (Boolean 种类 )遮盖转化成新文档   
  264.     },   
  265.     function(event) {    
  266.      //uploadf(event.target,divid);   
  267.      var path = name;//缩小变换总体目标照片的相对路径   
  268.      //event.target获得缩小变换后的照片url路   
  269.      //filename照片名字   
  270.      saveimage(event.target,divid,filename,path);   
  271.     },function(error) {   
  272.      plus.nativeUI.toast("缩小照片不成功,请稍候再试");   
  273.    });   
  274.   }   
  275.   //储存信息内容到当地   
  276.   /**   
  277.    *    
  278.    * @param {Object} url  照片的详细地址   
  279.    * @param {Object} divid  字段的名字   
  280.    * @param {Object} name   照片的名字   
  281.    */   
  282.   function saveimage(url,divid,name,path){   
  283.    //alert(url);//file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ⑴467602809090.jpg   
  284.    //alert(path);//_doc/upload/F_ZDDZZ⑴467602809090.jpg   
  285.    var  state=0;   
  286.    var wt = plus.nativeUI.showWaiting();   
  287.     //  plus.storage.clear();    
  288.    namename=name.substring(0,name.indexOf("."));//照片名字:90   
  289.    var id = document.getElementById("ckjl.id").value;   
  290.    var itemname=id+"img-"+divid;//429img-F_ZDDZ   
  291.    var itemvalue=plus.storage.getItem(itemname);   
  292.    if(itemvalue==null){   
  293.     itemvalue="{"+name+","+path+","+url+"}";//{IMG_20160704_112614,_doc/upload/F_ZDDZZ-IMG_20160704_112614.jpg,file:///storage/emulated/0/Android/data/io.dcloud...../doc/upload/F_ZDDZZ⑴467602809090.jpg}   
  294.    }else{     
  295.     itemvalueitemvalue=itemvalue+"{"+name+","+path+","+url+"}";   
  296.    }   
  297.    plus.storage.setItem(itemname, itemvalue);   
  298.       
  299.    var src = 'src="'+url+'"';   
  300.    //alert("itemvalue="+itemvalue);   
  301.    showImgDetail(name,divid,id,src);   
  302.    wt.close();   
  303.       
  304.   }   
  305.   //提交照片,案例中沒有加上提交按钮   
  306.   function uploadimge(agree,back) {   
  307.   //plus.storage.clear();   
  308.    var wa = plus.nativeUI.showWaiting();   
  309.    var DkeyNames=[];   
  310.    var id = document.getElementById("ckjl.id").value;    
  311.    var length=id.toString().length;    
  312.    var ididnmae=id.toString();   
  313.    var numKeys=plus.storage.getLength();   
  314.    var task = plus.uploader.createUpload(getUrl() + 'url', {   
  315.         method: "POST"   
  316.        },   
  317.        function(t, status) {   
  318.         if (status == 200) {   
  319.          console.log("提交取得成功");   
  320.           $.ajax({   
  321.           type: "post",   
  322.           url: getUrl() + 'url',   
  323.           data: {   
  324.            taskId: taskId,   
  325.            voteAgree: agree,   
  326.            back: back,   
  327.            voteContent: $("#assign").val(),   
  328.           },   
  329.           async: true,   
  330.           dataType: "text",   
  331.           success: function(data) {   
  332.            wa.close();   
  333.            goList(data);   
  334.              
  335.               
  336.           },   
  337.           error: function() {   
  338.            wa.close();   
  339.            myAlert("互联网不正确,递交审核不成功,请稍候再试");   
  340.           }   
  341.          });   
  342.              
  343.             
  344.         } else {   
  345.          wa.close();   
  346.          console.log("提交不成功");    
  347.         }   
  348.        }   
  349.       );   
  350.    task.addData("id",id);   
  351.    for(var i=0; i<imgArray.length;i++){     
  352.     var itemkey=id+"img-"+imgArray[i];   
  353.      if(plus.storage.getItem(itemkey)!=null){   
  354.      var itemvalue=plus.storage.getItem(itemkey).split("{");   
  355.      for(var img=1;img<itemvalue.length;img++){   
  356.       var imgname=itemvalue[img].substr(0,itemvalue[img].indexOf(","));   
  357.       var imgurl=itemvalue[img].substring(itemvalue[img].indexOf(",")+1,itemvalue[img].lastIndexOf(","));   
  358.       task.addFile(imgurl,{key:imgurl});   
  359.      }   
  360.     }   
  361.    }   
  362.    task.start();   
  363.       
  364.   }   
  365. </script>  
  366. </body>  
  367. </html>  
  368.   

实际效果图:

             


             


以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。

原文连接:http://blog.csdn.net/qq_27626333/article/details/51896616

上一篇:HTML5线下缓存文件Manifest是甚么 返回下一篇:没有了