formData原生实现图片上传

formData原生实现图片上传

大家好,又见面了,我是全栈君。

//修改头像--开始//
let btn = document.querySelector('#avatarImage')
let file = document.querySelector('#newuploadAvatar')

btn.onclick = function() {
    file.click() // 调取系统选择图片的弹框
}

// 监听input的file变化值
file.onchange = function (event) {
    let file = event.target.files[0]
    upload(file)
}

function upload(file) {
    let xhr = new XMLHttpRequest()
    xhr.open('post', 'updateavatar', true)
    let formData = new FormData()
    formData.set('filename', file)
    xhr.send(formData)
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            console.log('success')
        }
    }
}
//修改头像--结束//

html部分:

 <div class="avatar__edit">
                                            <img id="avatarPreloader" src="__IMG__/preload.svg">
                                            <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12">
                                                <path d="M0 9.002v2.368h2.368l6.986-6.985-2.37-2.37zm11.185-6.45a.63.63 0 0 0 0-.891L9.707.185a.63.63 0 0 0-.891 0L7.66 1.34l2.37 2.37 1.156-1.156z"
                                                      fill="#383E45" fill-rule="evenodd"/>
                                            </svg>
<!--                                            <label for="newuploadAvatar">-->
                                            <img id="avatarImage" src="{$user.headimg|default='__IMG__/avatarImage.png'}" width="110"  height="110">
<!--                                            </label>-->
                                        </div>
                                        <input type="file" id="newuploadAvatar"    style="opacity: 0;" accept="image/png, image/jpeg, image/gif, image/jpg" data-max-size="2048" >

参考:https://juejin.im/post/5aa01068f265da23970669ce

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112020.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据脱敏

    大数据脱敏

    2021年11月27日
    61
  • rtmp/rtsp/hls公网真正可用的测试地址

    rtmp/rtsp/hls公网真正可用的测试地址相信大家在调试播放器的时候,都有这样的困惑,很难找到合适的公有测试源,以下是大牛直播SDK(GitHub地址)整理的真正可用的直播地址源。其中,rtmp和rtsp的url,用我们播放器验证通过,hls的地址,用vlc验证通过。1.RTMP协议直播源香港卫视:rtmp://live.hkstv.hk.lxdns.com/live/hks(目前不可用,hks1、hks2可用)这个r…

    2022年5月10日
    504
  • C++基础篇 — vector的resize函数和reserve函数

    对于C++的vector容器模板类,存在size和capacity这样两个概念,可以分别通过vector的size()和capacity()方法获得该vector当前的size和capacity值。相应的,vector提供了两个方法来分别对size和capacity进行操作,它们就是resize方法和reserve方法。首先,对于size和capacity,这是两个比较容易混淆的概念。

    2022年4月7日
    95
  • 数组对象转json格式[通俗易懂]

    数组对象转json格式[通俗易懂]1、数组转化成JSON对象后,key值是索引,value是数组对应的值。//数组也可以转化成JSON对象varjStr3="[[10,20,30],40,50,60]";varj3=JSON.parse(jStr3);for(letkeyinj3){console.log(‘key:’,key);}//key…

    2022年9月18日
    2
  • OA工作流-Activiti(一)[通俗易懂]

    OA工作流-Activiti(一)[通俗易懂]OA工作流-Activiti(一)一、工作流定义工作流:一系列相互衔接、自动进行的业务活动或任务。OA工作流:建立于网络办公自动化基础上的事务行政审批,业务申请审批、公文、信息等的网上流转。它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。    不同于以往我们在仅仅进行增删改查(CRUD),我们还…

    2022年6月23日
    29
  • 串口调试助手(CM野人版)4.0有严重Bug,已经跟作者反应,等候更新

    串口调试助手(CM野人版)4.0有严重Bug,已经跟作者反应,等候更新这个软件,看起来很漂亮,能任意设置波特率,支持921600波特率,看起来很华丽。但最近发现其一个严重的Bug:版本就是4.0我打印了一些信息:能正常显示。我把这些打印的代码行给注释了,依然能打印出来,见鬼了。然后我重启电脑,问题消失,不再打印注释过的代码行。我换了别的串口助手,问题消失。所以一定是这个助手的问题。基础的调试软件出问题,非常不易发现,带来的损失非常大。建

    2022年5月8日
    85

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号