zoukankan      html  css  js  c++  java
  • H5调用相机和相册更换头像

    需求:H5调用手机的相机和相册从而实现更换头像的功能

    这个功能是很常用的一个功能,因此做一个记录。

    1.在头像img下加一个文件输入框

    <input type="file" id="file" accept="image/*" capture='camera' multiple>

    并隐藏之

    1 <center>
    2    <img src="images/Bitmap@2x.png" class="avatar">
    3    <input type="file" id="file" accept="image/*" capture='camera' multiple>
    4 </center>
    1 #file {
    2    display: none;
    3 }

    2.点击头像触发文件输入框点击事件

    $(".avatar").click(function(){
        $("#file").trigger("click")
    })

    3.给ios去掉capture属性,这样iphone才能调用相册。这段代码可以提取到公共js里复用。

    var file = document.querySelector('input');
    if (getIos()&&file) {
        file.removeAttribute("capture");
    }
    function getIos() {
        var ua=navigator.userAgent.toLowerCase();
        if (ua.match(/iPhonesOS/i) == "iphone os") {
            return true;
        } else {
            return false;
        }
    }

    4.通过js拿到上传的文件内容,转成base64编码并显示图片在页面上

     1 //转成base64
     2 $('input[type=file]').on('change', function () {
     3     var reader = new FileReader();
     4     reader.onload = function (e) {
     5         console.log(reader.result);  //或者e.target.result都是一样的,都是base64码
     6         $(".avatar").attr("src", reader.result);
     7      }
     8     reader.readAsDataURL(this.files[0])
     9     //filses就是input[type=file]文件列表,files[0]就是第一个文件,这里就是将选择的第一个图片文件转化为base64的码
    10 }) 

    5.实现效果页面展示

    更换头像前的效果:

     更换头像后的效果:

    附:获取File对象的方式为

    frontFile = $('#file')[0].files[0]
    console.log(frontFile)

    控制台输出为:

    我们可以通过封装File对象到FormData,与上传图片接口对接,如:

    let formData
    formData = new FormData()
    formData.append('mFile',frontFile)
  • 相关阅读:
    如何把项目上传到github
    springBoot整合Mybatis为什么可以省略mybatis-config.xml
    【Mybatis源码解析】-mybatis-spring原理解析
    没有名字 [整除分块优化dp]
    替身使者 [区间dp]
    P3158 [CQOI2011]放棋子 [动态规划]
    博士之时 [分类讨论, 计数]
    曾有两次 [最短路树]
    序列 [线段树]
    城镇 [树的直径, 启发式合并]
  • 原文地址:https://www.cnblogs.com/luoyihao/p/11457558.html
Copyright © 2011-2022 走看看