• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >HBuilder教程 > HTML5 Plus 拍照或者相册选择图片上传

HTML5 Plus 拍照或者相册选择图片上传

作者:A_山水子农 字体:[增加 减小] 来源:互联网 时间:2017-05-31

本文主要包含html5plus,html5 plus api,html5plus://ready,html5plus runtime,html5 window.plus等相关知识,A_山水子农希望在学习及工作中可以帮助到您

HBuilder+HTML5 Plus+MUI实现拍照或者相册选择图片上传,利用HTML5 Plus的Camera、Gallery、IO、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)协议。

 拍照或相册选取一张demo下载地址:http://pan.baidu.com/s/1cqnSNs

 拍照或相册选取多张demo下载地址:http://pan.baidu.com/s/1o7UQHxo
--------------------- 
 

<!doctype html>
<html class="feedback">
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />
        <meta name="misapplication-tap-highlight" content="no" />
        <meta name="HandheldFriendly" content="true" />
        <meta name="MobileOptimized" content="320" />
        <title>HTML5 Plus 拍照或者相册选择图片上传</title>
        <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/iconfont.css" />
        <link rel="stylesheet" type="text/css" href="../../css/feedback-page.css" />
        <link rel="stylesheet" href="../../css/font-awesome.min.css">
        <script src="../../js/jquery.js"></script>
        <script type="text/javascript" src="../../js/common.js"></script>
        <script type="text/javascript" src="../../js/utitls.js"></script>
        <style type="text/css">
            .del {
                position: absolute;
                top:1px;
                right: 1px;    
                display: block;         
                line-height: 1;
                cursor: pointer;
                color:#fff;
                }
 
            .del:hover {
                color:#ff3333;
            }
        </style>
        <style>
            .table-view {
                position: relative;
                margin-top: 0;
                margin-bottom: 0;
                padding-left: 0;
                list-style: none;
                background-color: #f5f5f5;
            }
            
            .table-view-cell {
                position: relative;
                overflow: hidden;
                padding: 0px 15px;
                -webkit-touch-callout: none;
                margin-bottom: 1px;
            }
            
            .table-view-cell:after {
                position: absolute;
                right: 0;
                bottom: 0;
                left: 0px;
                height: 1px;
                content: '';
                -webkit-transform: scaleY(.5);
                transform: scaleY(.5);
                background-color: #c8c7cc;
            }
            
            .table-view-cell>a:not(.btn) {
                position: relative;
                display: block;
                overflow: hidden;
                margin: -0px -15px;
                padding: inherit;
                white-space: nowrap;
                text-overflow: ellipsis;
                color: inherit;
                background-color: #75b9f4;
                height: 40px;
                line-height: 40px;
            }
            
            .navigate-right:after
            {
                font-family: Muiicons;
                font-size: inherit;
                line-height: 1;
                position: absolute;
                top: 50%;
                display: inline-block;
                -webkit-transform: translateY(-50%);
                transform: translateY(-50%);
                text-decoration: none;
                color: #666;
                -webkit-font-smoothing: antialiased;
            }
            
            .table-view-cell.collapse .collapse-content {
                position: relative;
                display: none;
                overflow: hidden;
                margin: 0px -15px 0px;
                padding: 0px 0px !important;
                -webkit-transition: height .35s ease;
                -o-transition: height .35s ease;
                transition: height .35s ease;
                background-color: transparent;
            }
            .image-item{
                position: relative;
            }
            .image-item .info{
                position: absolute;
                top:0px;
                left:4px;
                color: #ff9900;
                font-size: 12px;                        
                
            }
        </style>
    </head>
    <body>
        <header class="bar bar-nav">
            <h1 class="title">拍照或者相册选择图片上传</h1>
        </header>
        <div class="content">
            <div style="margin-top: 10px;"></div>
            <input type="hidden" id="ckjl.id" name="ckjl.id" value="429">
                    <div class="collapse-content" >
                        <form>
                            <label class="row-label"></label>
                            <div id='F_CKJLBS' class="row image-list">
                                <div class="image-item " id="F_CKJLB" onclick="showActionSheet(this);"></div>
                        </div>
                        </form>
                    </div>
        </div>
        <script src="../../js/mui.min.js"></script>
<script>
    var procinstid = 0;
    //初始化页面执行操作
    function plusReady() {
        //Android返回键监听事件
        plus.key.addEventListener('backbutton',function(){
            myclose();
        },false);
    }
    if (window.plus) {
        plusReady();
    } else {
        document.addEventListener('plusready', plusReady, false);
    }
        //加载页面初始化需要加载的图片信息
        function showImgDetail (imgId,imgkey,id,src) {  
            var html = "";
            html +='<div  id="Img'+imgId+imgkey+'" class="image-item ">';    
            html +='    <img id="picBig" data-preview-src="" data-preview-group="1" '+src+'/>';
            html +='    <span class="del" onclick="delImg(\''+imgId+'\',\''+imgkey+'\','+id+');">';       
            html +='        <div class="fa fa-times-circle"></div>';    
            html +='    </span>';    
            html +='</div>';
            $("#"+imgkey+"S").append(html);
        }
        //删除图片
        function delImg(imgId,imgkey,id){
            var bts = ["是", "否"];
            plus.nativeUI.confirm("是否删除图片?", function(e) {
                    var i = e.index;
                    if (i == 0) {
                        var itemname=id+"img-"+imgkey;
                        var itemvalue=plus.storage.getItem(itemname);
                        if(itemvalue!=null){
                            var index=itemvalue.indexOf(imgId+",");
                            if(index==-1){//没有找到
                                delImgfromint(imgId,imgkey,id,index);
                            }else{ 
                                delImgFromLocal(itemname,itemvalue,imgId,imgkey,index); //修改,加了一个index参数
                            }
                            
                        }else{
                            delImgfromint(imgId,imgkey,id); 
                        }
                    }
                },"查勘", bts);
            /*var isdel = confirm("是否删除图片?");
            if(isdel == false){
                return;
            }*/
            
            
        }
        function delImgFromLocal(itemname,itemvalue,imgId,imgkey,index){
                    var wa = plus.nativeUI.showWaiting();
                    var left=itemvalue.substr(0,index-1);
                    var right=itemvalue.substring(index,itemvalue.length);
                    var end=right.indexOf("}");
                    right=right.substring(end+1,right.length);
                    var newitem=left+right;
                    plus.storage.setItem(itemname,newitem); 
                    myAlert("删除成功");
                    $("#Img"+imgId+imgkey).remove();
                    wa.close();
        }
        //选取图片的来源,拍照和相册
        function showActionSheet(conf){
          var divid = conf.id;
              var actionbuttons=[{title:"拍照"},{title:"相册选取"}];
              var actionstyle={title:"选择照片",cancel:"取消",buttons:actionbuttons};
              plus.nativeUI.actionSheet(actionstyle, function(e){
                    if(e.index==1){
                        getImage(divid);
                    }else if(e.index==2){
                        galleryImg(divid);
                    }
              } );
               }
        //相册选取图片
              function galleryImg(divid) {
                 plus.gallery.pick( function(p){
                      plus.io.resolveLocalFileSystemURL(p, function(entry) {
                     compressImage(entry.toLocalURL(),entry.name,divid);
                }, function(e) {
                    plus.nativeUI.toast("读取拍照文件错误:" + e.message);
                });
                 }, function ( e ) {
                 }, {
                filename: "_doc/camera/",
                filter:"image"
                 } );
              }
        // 拍照
        function getImage(divid) {
            var cmr = plus.camera.getCamera();
            cmr.captureImage(function(p) {
                plus.io.resolveLocalFileSystemURL(p, function(entry) {
                    compressImage(entry.toLocalURL(),entry.name,divid);
                }, function(e) {
                    plus.nativeUI.toast("读取拍照文件错误:" + e.message);
                });
            }, function(e) {
            }, {
                filename: "_doc/camera/",
                index: 1
            });
        }
        //压缩图片
        function compressImage(url,filename,divid){
            var name="_doc/upload/"+divid+"-"+filename;//_doc/upload/F_ZDDZZ-1467602809090.jpg
            plus.zip.compressImage({
                    src:url,//src: (String 类型 )压缩转换原始图片的路径
                    dst:name,//压缩转换目标图片的路径
                    quality:20,//quality: (Number 类型 )压缩图片的质量.取值范围为1-100
                    overwrite:true//overwrite: (Boolean 类型 )覆盖生成新文件
                },
                function(event) { 
                    //uploadf(event.target,divid);
                    var path = name;//压缩转换目标图片的路径
                    //event.target获取压缩转换后的图片url路
                    //filename图片名称
                    saveimage(event.target,divid,filename,path);
                },function(error) {
                    plus.nativeUI.toast("压缩图片失败,请稍候再试");
            });
        }
        //保存信息到本地
        /**
         * 
         * @param {Object} url  图片的地址
         * @param {Object} divid  字段的名称
         * @param {Object} name   图片的名称
         */
        function saveimage(url,divid,name,path){
            var  state=0;
            var wt = plus.nativeUI.showWaiting();
          //  plus.storage.clear(); 
            name=name.substring(0,name.indexOf("."));
            var id = document.getElementById("ckjl.id").value;
            var itemname=id+"img-"+divid;
            var itemvalue=plus.storage.getItem(itemname);
            if(itemvalue==null){
                itemvalue="{"+name+","+path+","+url+"}";
            }else{  
                itemvalue=itemvalue+"{"+name+","+path+","+url+"}";
            }
            plus.storage.setItem(itemname, itemvalue);
            
            var src = 'src="'+url+'"';
            //alert("itemvalue="+itemvalue);
            showImgDetail(name,divid,id,src);
            wt.close();
            
        }
        //上传图片,实例中没有添加上传按钮
        function uploadimge(agree,back) {
        //plus.storage.clear();
         var wa = plus.nativeUI.showWaiting();
         var DkeyNames=[];
         var id = document.getElementById("ckjl.id").value; 
         var length=id.toString().length; 
         var idnmae=id.toString();
         var numKeys=plus.storage.getLength();
         var task = plus.uploader.createUpload('http://demo.dcloud.net.cn/helloh5/uploader/upload.php', {
                                method: "POST"
                            },
                            function(t, status) {
                                if (status == 200) {
                                    console.log("上传成功");
                                } else {
                                    wa.close();
                                    console.log("上传失败"); 
                                }
                            }
                        );
            task.addData("id",id);
            for(var i=0; i<imgArray.length;i++){  
                var itemkey=id+"img-"+imgArray[i];
                 if(plus.storage.getItem(itemkey)!=null){
                    var itemvalue=plus.storage.getItem(itemkey).split("{");
                    for(var img=1;img<itemvalue.length;img++){
                        var imgname=itemvalue[img].substr(0,itemvalue[img].indexOf(","));
                        var imgurl=itemvalue[img].substring(itemvalue[img].indexOf(",")+1,itemvalue[img].lastIndexOf(","));
                        task.addFile(imgurl,{key:imgurl});
                    }
                }
            }
            task.start();
            
        }
</script>
</body>
</html>
--------------------- 
 

您可能想查找下面的文章:

  • HTML5 Plus 拍照或者相册选择图片上传
  • Android集成HTML5+SDK,Runtime方式离线打包,空项目讲解

相关文章

  • 2017-05-31Hbuilder MUI App云端打包失败常见问题汇总
  • 2017-05-31HBuilder 打包生成APP的时候可以生成 IOS的 Bundle ID吗?
  • 2017-05-31关于手机webview、默认浏览器、HBuilder边改边看浏览器的区别和兼容性
  • 2017-05-31MUI Android 创建一个最精简的5+SDK打包工程
  • 2017-05-31html5仿ios下拉和上拉回弹功能2.0
  • 2017-05-31HBuilder mui中的无等待窗体切换是如何实现的
  • 2017-05-31mui开发App - 申请苹果开发者账号教程分享
  • 2017-05-31H5游戏改造流应用指南
  • 2017-05-31HBuilder mui 页面初始化
  • 2017-05-31远程文件缓存到本地

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • mui中几种open页面的区别
    • HBuilder MUI 关于百度定位
    • mui android native.js获取手机内部总的存储空间
    • webview启动速度优化及事件顺序解析
    • mui.plusready和mui.ready 随先随后?
    • Hbuilder MUI 多端发布开发指南
    • mui开发App - 申请苹果开发者账号教程分享
    • 新版本Hbuilder打包的IOS应用上传苹果市场 被提示不支持ipv6,如何解决?
    • hbuilder图片上传服务器端代码怎么写?( h5+)
    • a页面打开b页面,b页面加载成功后关闭当前页面,闪屏

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有