.bind(this)作用

该博客介绍了如何在Vue.js应用中实现文件上传,并将文件转换为Base64编码发送到服务器。通过监听input事件获取文件,使用FileReader API读取文件内容,然后利用axios进行POST请求。注意在回调函数中使用.bind(this)来保持上下文,确保能正确访问this.img。
<script>
    let vue = new Vue({
        el: "#app",
        data: {
            img: ''
        },
        methods: {
            upload(e) {
                let file = e.target.files[0];
                // let s = URL.createObjectURL(file);
                // this.img = s;
                //获取文件扩展名
                let substr = file.name.substr(file.name.lastIndexOf(".") + 1);
                let fileReader = new FileReader();
                //读取文件,是一个异步操作
                fileReader.readAsDataURL(file)
                //回调函数
                fileReader.onloadend = function (e) {
                    let result = e.target.result;
                    this.img = result;
                    console.log(result);
                    let obj = {
                        base64: result,
                        ext: substr
                    }

                    axios.post(`stu/upload`, obj).then(response => {
                        console.log(response)
                    })
                        
                    //此处不写 .bind(this) 将无法获取this.img 获取上一级
                }.bind(this)

            }
        }
    })
</script>

此处不写 .bind(this) 将无法获取this.img , 返回到上一级函数 获取this , this.img = result;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值