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)
上一篇 2022年2月11日 下午4:00
下一篇 2022年2月11日 下午5:00


相关推荐

  • IDEA 断点调试快捷键

    IDEA 断点调试快捷键1 重新跑当前程序 键盘快捷键 CTRL F5 2 以断点为粒度跳转 后面没有断点就直接跑完程序 键盘快捷键 F9 3 停止项目或者程序 如果是 main 方法 点一下就停下了 如果是 Javaweb 项目 点 2 下 就把服务器给停了 键盘快捷键 CTRL F2 4 查看所有的断点设置情况 键盘快捷键 CTRL SHIFG F8 5 点一下取消所有断点 点两下复原所有断点 无快捷键 6 待补充 7 还原调试布局 8 跳转到当前代码所执行的地方 也就是说你在看代码的时候 点到其他地方 一点这个按钮

    2026年3月26日
    2
  • Ora:12154 PLsql连接报错

    Ora:12154 PLsql连接报错新入职公司,需要安装一些软件,安装了oracle客户端和plsql,结果发现plsql的database是空白,没有可选。找了度娘,查看安装路径,是oracle安装路径:d:/oracle/product/11.2.0/client_1/admin文件夹下少了两个文件,listener.ora和tnsnames.ora,于是卸载重装,折腾了几次,连注册表都删了,还是不行。解决方法:在admin路径栏敲cmd,netca,根据提示新建一个监听。admin文件夹下就会多一个listener.ora文件(可能

    2022年7月19日
    16
  • Pycharm中运行Python代码的几种方式

    Pycharm中运行Python代码的几种方式Pycharm 中运行 Python 代码的几种方式 nbsp nbsp 在 pycharm 中的 Python 代码运行会出现各种奇葩的问题 比如 密码输入时不显示或没有提示 给我们带来一些麻烦 下面介绍几种代码运行的几种方式 nbsp nbsp 一 直接运行 Run 按钮或者快捷键 shift F10 nbsp nbsp 1 进入 pychram 主界面 输入代码后 直接 Run 就可以 nbsp nbsp 2 Termnal 下运行 py 文件

    2026年3月27日
    1
  • 不使用Form表单实现页面查询重置功能

    不使用Form表单实现页面查询重置功能问题描述 因为有些页面中的查询选择框太多了 所以要求在这些页面上添加重置按钮选择框使用的是 antd 的 Select 组件 antd 的组件好用是好用 但是密闭性太强了 想要根据需求自定义就会变得很困难其中 Select 组件中占用了 value 这个属性 将其定义为 指定当前选中的条目这就带来一个问题 原本初始时我设置了 placeholder 给出提示信息 结果现在直接就显示下拉框中的第一条信息 我准备使用点击 Button

    2026年3月18日
    2
  • maven版本查看_maven最新版本

    maven版本查看_maven最新版本工作中,我们经常要操作maven以及配置maven,有时还需要向maven中手动添加jar包;那么如何查看maven的版本呢?第一种方法:就是从你安装maven插件的目录文件夹中可以看出;第二种方法:直接使用黑窗口命令查看:但是前提是mavenhome环境变量必须配置好否则无法查看;输入命令 mvn-version 那,如何配置maven的环境变量呢?计算机–右键…

    2022年8月22日
    8
  • 2020 年中国程序员薪资和生活现状调查报告[通俗易懂]

    2020 年中国程序员薪资和生活现状调查报告[通俗易懂]作者|程序员客栈来源|ID:proginnwx根据中国互联网络信息中心(CNNIC)近日发布第44次《中国互联网络发展状况统计报告》。截至2019年06月,中国网民规模为8.54亿,较2018年底增加2598万。网上外卖用户规模达4.21亿,较2018年底增长1516万;网络视频用户规模达7.59亿,较2018年底增长3391万;我…

    2026年4月14日
    7

发表回复

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

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