file input 修改样式以及原生方法

1.修改上传文件 input 的样式。(利用position + opacity 属性完成)

   <button type="button">
        上传文件
        <input type="file">
    </button>
    <div class="img-wrap">
        <img src="" alt="">
    </div>
button {
            width: 80px;
            height: 35px;
            display: block;
            overflow: hidden;
            border: none;
            background: #1AAD19;
            outline: none;
            box-shadow: 0px 0px 2px #147c13;
            transition: ease-out .2s;
            cursor: pointer;
            font-size: 12px;
            color: #fff;
        }
        button:active {
            background: #178f16;
            box-shadow: inset 0px 0px 20px #147c13;
        }
        button input[type="file"] {
            height: 35px;
            width: 80px;
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            opacity: 0;
        }

2.原生input的一些方法

//使用的jq
    $('input').on('change',function(){

        var file = $('input').get(0).files[0];//转化为原生对象

        console.log('所选文件的路径:' + $(this).val());//所选文件的路径

        console.log('所选文件的信息:');//所选文件的信息
        console.log(file);//所选文件的信息

        console.log('文件名:' + file.name);//文件名

        console.log('文件大小:' + file.size);//文件大小

        console.log('文件大小:' + Math.ceil(file.size/1024) + 'kb');//转换为kb

        console.log('文件名:' + file.type);//文件类型

        //FileReader 对象
        //对象事件 与方法
        var fReader1 = new FileReader();//创建文件阅读对象
        var fReader2 = new FileReader();//创建文件阅读对象
        var fReader3 = new FileReader();//创建文件阅读对象

        fReader1.readAsDataURL(file);//使用返回值为base64文件地址的方法阅读文件

        fReader2.readAsBinaryString(file);//使用返回值为二进制资源的方法阅读文件

        fReader3.readAsText(file);//使用返回值为文件内容的方法阅读文件


        fReader1.onloadstart = function(){
            console.log('开始');
        };
        fReader1.onerror = function(){
            console.log('错误');
        };
        fReader1.onprogress = function(){
            console.log('正在阅读');
        };
        fReader1.onload = function(){
            console.log('成功');
            console.log(fReader1);//base64

            console.log(fReader2);
            
            console.log(fReader3);


            //通过将base64地址赋予给img,可以达到选取的图片文件显示在浏览器上
            var base64url = fReader1.result;

            $('img').attr('src',base64url);
        };
        fReader1.onloadend = function(){
            console.log('结束');//无论成功与否
        };
        fReader1.onabort= function(){
            console.log('中止');
        };
    });

结果
7.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,732评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,074评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,488评论 19 139
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,785评论 0 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,618评论 1 32

友情链接更多精彩内容