您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

安卓中HTML5图片上传实例详解

2024/2/21 13:36:22发布17次查看
应用的平台环境:安卓webview;
涉及的技术点:
(1) <input type="file" > :在开发中,安卓webview默认点击无法调用文件选择与相机拍照(其他的设备ios等浏览器没有此问题),需要让安卓开发同学在代码调整即可;
(2) 点击选择图片后如何展示在页面上呢?很多开发人员估计是直接获取 this.value,这是错误的,不可行。有2个api可以现实,new filereader与window.url.createobjecturl(最优);
new filereader的实现如下:
   upload
在安卓webview实战中,读取与写入速度相当慢,不推荐;
 //-----------------------------------------------------------------------------------------
window.url.createobjecturl实现如下:
<input type="file" name="" id="j-file">  <img src="" id='j-img' alt="" width="100%">  <button id='j-btn'>upload</button>  <script type="text/javascript">   var o_file = document.getelementbyid('j-file'),       o_btn = document.getelementbyid('j-btn'),       o_img = document.getelementbyid('j-img');   o_file.addeventlistener('change',function(event){      var file = event.target.files[0];      if(!file) return;      var url = window.url.createobjecturl(file);      if(/image/.test(file.type)){           o_img.setattribute('src',url);       }else{           console.log('请选择图片');       }   },false);   o_btn.onclick = function(){      var data = new formdata();       data.append('file_a',o_file.files[0]);       data.append('text','test');         console.log(data);   } </script>
这技术的好处是可以不必把文件内容读取到javascript中,而是直接使用文件内容,速度很快;
(3)如何讲图片数据通过xhr对象传递给服务端呢?new formdata(),为序列化表单以及创建与表单格式相同的数据(xhr传输)提供了实现,formdata不必明确在xhr对象上设置请求头部(如果是表单里面图片上传,enctype需要设置multipart/form-data),xhr能自动识别,实例方法.append(key,value)自定义数据;
完整的代码例子如下:
<input type="file" name="" id="j-file">  <img src="" id='j-img' alt="" width="100%">  <button id='j-btn'>upload</button>  <script type="text/javascript">   var o_file = document.getelementbyid('j-file'),       o_btn = document.getelementbyid('j-btn'),       o_img = document.getelementbyid('j-img'),       target_file = null;   o_file.addeventlistener('change',function(event){      var file = event.target.files[0];      if(!file) return;       target_file = file;      var url = window.url.createobjecturl(target_file);      if(/image/.test(target_file.type)){           o_img.setattribute('src',url);       }else{           console.log('请选择图片');       }   },false);   o_btn.onclick = function(){      if(!target_file) return;      //数据处理  var data = new formdata();       data.append('key',target_file);           var xhr = new xmlhttprequest();      if(xhr.upload){         xhr.upload.addeventlistener(progress, function(e){          var loaded = e.loaded;    //已经上传大小情况   var tot = e.total;      //附件总大小   var per = math.floor(100*loaded/tot);  //已经上传的百分比           console.log(per+'%');//进度        }, false);       }            xhr.onreadystatechange = function(e) {          if (xhr.readystate == 4) {if (xhr.status >=200&&xhr.status<300||xhr.status==304) {//上传成功                             }           }       };        xhr.onloadend = function(){//无论失败或成功      }       xhr.onerror = function(){                     //网络失败      }      // 开始上传      xhr.open(post,'上传地址', true);        xhr.send(data);    } </script>
以上就是安卓中html5图片上传实例详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product