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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ditto使用教程_擦窗神器使用视频

    ditto使用教程_擦窗神器使用视频1.普通的粘贴快捷键设置:我设置成。但是注意,有些程序里ctrl有特殊功能,这样键会出现问题,所以建议将粘贴快捷键设置的复杂一点,例如,`ctrl+alt+shift+[09]`等等。然后

    2022年8月4日
    11
  • 报错:“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”「建议收藏」

    报错:“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”「建议收藏」解决sqlserver批量插入时出现“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”问题问题的原因:源的一个字段值长度超过了目标数据库字段的最大长度解决方法:扩大目标数据库对应字段的长度一般原因是源的字段会用空字符串填充,导致字符串长度很大,可以使用rtrim去除…

    2022年7月20日
    15
  • TB6612FNG电机驱动模块使用说明

    TB6612FNG电机驱动模块TB6612的的用法:TB6612是双驱动,也就是可以驱动两个电机下面分别是控制两个电机的IO口STBY口接单片机的IO口清零电机全部停止,置1通过AIN1AIN2,BIN1,BIN2来控制正反转VM接15V以内电源VCC接2.7v–5V电源GND接地驱动1路PWMA接单片机的PWM口真值表:AIN1 0…

    2022年4月7日
    650
  • python的命名规则_python命名规则[通俗易懂]

    python的命名规则_python命名规则[通俗易懂]广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!1、模块模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)#正确的模块名importdecoderimporthtml_parser#不推荐的模块名importdecoder-特殊的如init模块,如果模块是包的私有模块会使用前缀加一个…

    2022年6月25日
    38
  • bs和cs的区别与优缺点_CS和CIS的联系与区别

    bs和cs的区别与优缺点_CS和CIS的联系与区别一,B/S结构(baiBrowser/Server,浏du览器/服务器模式),zhi是WEB兴起后的一种网络结构模式,WEB浏览器是客户端dao最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英[‘braʊzə]美[‘braʊzɚ]),如NetscapeNavigator或InternetExplorer,服务器安装SQLServer、Oracle、MYSQL等数据库。浏览器通过WebServ

    2022年10月16日
    2
  • 计算机病毒对消息钩子的利用与对抗

    计算机病毒对消息钩子的利用与对抗一、消息钩子的概念    1、基本概念   Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息。为了拦截消息,Windows提出了钩子的概念。钩子(Hook)是Windows消息处理机制中的一个监视点,钩子提供一个回调函数。当在某个程序中安装钩子后,它将监视该程序的消息,在指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有

    2022年7月26日
    10

发表回复

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

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