获取上传图片进度百分比

获取上传图片进度百分比

// 判断是否是图片
export function fileIsImg(fileName: string) {
  const strFilter = '.jpeg|.gif|.jpg|.png|.bmp|.pic|.svg|.psd|.dxf|.swf|.webp|';
  if (fileName.indexOf('.') > -1) {
    const p = fileName.lastIndexOf('.');
    let strPostfix = fileName.substring(p, fileName.length) + '|';
    strPostfix = strPostfix.toLowerCase();
    if (strFilter.indexOf(strPostfix) > -1) {
      return true;
    }
  }
  return false;
}

// 上传文件
export const uploadFile = (file: File, fileName: string, cb?: Function) => {
  return new Promise<{ code: string }>((resolve, reject) => {
    const type = fileIsImg(fileName) ? 'img' : '其他类型';
    const data = new FormData();
    const xhr = new XMLHttpRequest();
    if (cb && typeof cb === 'function') {
      xhr.upload.onprogress = (event) => {
        if (event.lengthComputable) {
          const percentComplete = (event.loaded / event.total) * 100; // 上传进度百分比
          (cb as Function)(percentComplete.toFixed(2));
        }
      };
    }
    data.append('fileType', type);
    data.append('fileName', fileName || file.name);
    data.append('file', file);
    const { token } = getToken();
    xhr.open('post', '上传图片接口');
    xhr.setRequestHeader('blade-auth', `bearer ${token}`);
    xhr.send(data);
    xhr.onreadystatechange = () => {
      if (xhr.status === 200) {
        if (xhr.readyState === 4) {
          if (xhr.responseText) {
            const result = JSON.parse(xhr.responseText).data;
            return resolve(result);
          }
          return reject('上传失败!');
        }
      } else {
        return reject('上传失败!');
      }
    };
  });
};
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值