input标签 type='file' 上传图片问题

近期,公司有个项目,其中,有个上传头像的功能,在此整理一下。

首先,贴一下代码

html 中

 <input class="weui-uploader__input" id="uploaderInput" type="file" accept="image/*" multiple="" οnchange='openFile(event)'>

js中

        var openFile = function (event) {
            var input = event.target;
            var reader = new FileReader();
            reader.onload = function () {
                var database64 = getBase64Image(reader.result);
                $.ajax({
                    url: UserAPI.upload_headimg,
                    type: "POST",
                    data: { "": database64 },
                    success: function (data) {
                        var url = data["data"];
                        $("#user_img").attr("src", url);
                    }
                });
               
            };
            reader.readAsDataURL(input.files[0]);

        };
        function getBase64Image(imgElem) {
            return imgElem.replace(/^data:image\/(jpeg|jpg);base64,/, "");}

html不用多说了,下面来说一下js中的代码

先说一下流程    将图片内容转换为Base64,然后异步传到后台。 (后台是一个带有object 类型参数的 web api 方法)

下面看一下 FileReader 中的方法

FileReader接口的方法
方法名 参数描述
readAsBinaryStringfile将文件读取为二进制编码
readAsTextfile,[encoding]将文件读取为文本
readAsDataURLfile将文件读取为DataURL
abort(none)终端读取操作

FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

FileReader接口的事件
事件描述
onabort中断
onerror出错
onloadstart开始
onprogress正在读取
onload成功读取
onloadend读取完成,无论成功失败


了解 FileReader 中的方法和事件,那么 js 中的代码也就一目了然了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值