AJAX+FormData 实现头像上传和图片预览

主要的实现步骤:
① 使用文件选择器选择图片文件
② 把用户选择的文件存入 FormData 对象
③ 使用 axios 把 FormData 发送给服务器
④ 模拟文件选择器的点击事件

在这里插入图片描述

ajax提交服务器
formdata存放数据
获取文件对象 files
获取文件对象地址 URL.createObjectURL();
以下是全部代码:
html

 <div class="thumb-box">
    <!-- 头像 -->
    <img src="./images/cover.jpg" class="img-thumbnail thumb" alt="">
    <div class="mt-2">
      <!-- 文件选择框 -->
      <!-- accept 属性表示可选择的文件类型 -->
      <!-- image/* 表示只允许选择图片类型的文件 -->
      <input type="file" id="iptFile" accept="image/*" style="display: none;">
      <!-- 选择头像图片的按钮 -->
      <button class="btn btn-primary" id="btnChoose">选择 & 上传图片</button>
    </div>
  </div>

javascript

<script src="./lib/jquery-v3.6.0.js"></script>
  <script src="./lib/axios.js"></script>
  <script>
    // 点击button按钮 触发 input的文件按钮
    $('#btnChoose').click(function () {
      //  触发 用trigger绑定事件更好点
      $('#iptFile').trigger('click');
    })
    $('#iptFile').change(function () {
      //  获取当前这个文件的 文件对象
      //  let file = this.files
      if (this.files.length > 0) {
        // 获取文件对象
        let file = this.files[0];
        // 做一个文件预览
        let objFile = URL.createObjectURL(file);
        $('img').attr('src', objFile);
        // 让文件上传
        let fd = new FormData();
        fd.append('avatar', file);
        axios.post('http://www.liulongbin.top:端口号/api/upload/avatar', fd).then(({ data }) => {
          console.log(data);
        })
      }
    })
  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值