IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> el-upload限制文件大小(图片尺寸) -> 正文阅读

[JavaScript知识库]el-upload限制文件大小(图片尺寸)

1. 在el-upload控件中加入on-change方法:

<el-upload id="file"
  ref="upload"
  slot="append"
  :action="file.action"
  :with-credentials="true"
  name="file"
  :data="file.data"
  :show-file-list="false"
  accept=".xls,.xlsx,.csv"
  :disabled="isDisabled"
  :auto-upload="false"
  :on-change="handleChangeFile">
  <el-button class="file_upload"
    type="default"></el-button>
  <label for="file"
    class="file-btn h-icon-folder"></label>
</el-upload>

2. 在on-change方法中处理:

handleChangeFile (file, fileList) {
  this.isDisabled = false
  if (!file) return
  var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1)
  const isLt2M = file.size / 1024 / 1024 < 50
  if (testmsg !== 'xls' && testmsg !== 'xlsx' && testmsg !== 'csv') {
    this.$refs.upload.clearFiles()
    this.$message({
      message: '上传文件只能是 .xls、.xlsx、csv格式!',
      type: 'warning'
    })
    return false
  }
  if (!isLt2M) {
    this.$refs.upload.clearFiles()
    this.$message({
      message: '上传文件大小不能超过 50MB!',
      type: 'warning'
    })
    return false
  }
  this.fileName = file.name
}

3.作为补充, 如果对图片的尺寸有限制也可以实现的(这里只做补充, 此文件中没用到):

// 说明: 这部分代码不是本项目的,扩展
onchange (file) {
  let isLt = file.size / 1024 < 200 // 判断是否小于200Kb
  if (!isLt) {
    this.$message.warning('图片大小不能超过200KB! 请重新上传')
    this.$refs.upload.clearFiles()
    this.basicForm.image = ''
    this.basicForm.imageFile = []
  } else {
    this.asyncImgChecked(file).then(data => {
      if (data) {
        this.basicForm.image = file.name
        this.basicForm.imageFile = file
      } else {
        this.basicForm.image = ''
        this.basicForm.imageFile = []
        this.$refs.upload.clearFiles()
        this.$message.warning('图片尺寸不小于64 X 64')
      }
    })
  }
},
// 计算图片尺寸
asyncImgChecked (file) {
  return new Promise((resolve) => {
    let reader = new FileReader()
    reader.readAsDataURL(file.raw) // 必须用file.raw
    reader.onload = () => { // 让页面中的img标签的src指向读取的路径
      let img = new Image()
      img.src = reader.result
      // console.log(`1当前文件尺寸大小:${img.width}×${img.height}`)
      if (img.complete) { // 如果存在浏览器缓存中
        if (img.width < 64 || img.height < 64) {
          resolve(false)
        } else {
          resolve(true)
        }
      } else {
        img.onload = () => {
          if (img.width < 64 || img.height < 64) {
            resolve(false)
          } else {
            resolve(true)
          }
        }
      }
    }
  })
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:15:02  更:2022-04-27 11:17:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:43:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码