• 使用html input标签解决调用本地相册中图片上传和预览的问题


    前些日子项目中遇到了一个问题(移动端项目),就是在反馈页面点击上传图片的时候,实现在本地读取照片并预览的效果,这样的实现效果可以避开把图片上传到服务器在预览的尴尬,具体的页面展示效果如下:

    具体的代码如下(偷个懒,也为了大家看的更方便,就截图了...)

    在这里面按钮的呈现样式是通过字体实现的,用的是阿里图标库,然后在图标的上面就是图中的input按钮了,只是input给它全透明了,所以我们看到的是一个"十"字的标志,这里面input的类型是file,accept是指上传文件的类型,这里面我们可以对要上传的文件进行一些限制,因为上传的是图片,所以图片的目录是image,此外还有audio、video,但是现在还没有对文件类型进行限制,所以要在他们的后面加上(如图片).gif、.png等等,想省事,那就直接image/*了,这样的话选择的范围也广一些,当然,实际项目中还是需要根据具体要求来做的,这一步做完之后,就会直接调用本地的文件夹了,Android效果如下:

    苹果手机效果如下:

    苹果手机的话是支持拍照的,Android不支持,效果出现之后,就是通过js代码进行相应的操作了,代码如下:

    // 函数 从手机上导入预览照片
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();//FileReader() 用于读取文件
            reader.readAsDataURL(input.files[0]);//异步加载文件
            reader.onload = function (e) {
                $(".imgAddButton").before("<li><img src="+e.target.result+" /></li>");
                // 计算预览照片数量
                $(".popUpImgTitle>span:last-child>i:first-child").html($(".popUpImgList>ul>li").length-1);
            }
        }
    }
    // 调用函数 从手机上导入预览照片
    $("#imgInp").change(function(){
        if (parseInt($(".popUpImgTitle>span:last-child>i:first-child").html()) < 4) {
            readURL(this);
        } else {
            mui.alert("图片添加已达上限"," ");
        }
    });

    因为只能上传四张图片,所以我对其进行了一个判断,主要的代码还都是在readURL()函数里面,其中$("#imgInp")是指点击的那个完全透明的input,input.files是指判断是否上传了文件,input.files[0]是指这个文件数组里面的第一个,如果条件都为真,那么就创建一个FileReader() 实例,作用就是读取文件用的,是文件的API,具体可以参考这个网址 https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader,其中readAsDataURL用于异步加载文件,加载完成之后通过onload()函数进行相关的操作,图片的路径是e.target.result获取到,并把它座位img的src,好了,到此上传图片的功能就实现了,具体的效果如下:

    但是现在上传的方式是一张一张上传的,不是太方便,后期再研究了,参考的网址有两个,感谢他们的帮助

    https://www.cnblogs.com/wuxiexy/p/6738928.html

    http://blog.csdn.net/taohai123/article/details/53302405

    转载请注明出处,谢谢。

  • 相关阅读:
    已解决】Sublime中运行带input或raw_input的Python代码出错:EOFError: EOF when reading a line(转)
    暂时解决Sublime Text 2不支持input问题(转)
    Python中的注释(转)
    You don't have permission to access / on this server
    mysql开启慢查询方法(转)
    php获取当前url完整地址
    js中日期转换为时间戳
    发现js端日期跟php端日期格式不一致
    首发Zend Studio正式版注册破解(转)
    Arduino入门笔记(3):单LED闪烁
  • 原文地址:https://www.cnblogs.com/zxn-9588/p/8544907.html
Copyright © 2020-2023  润新知