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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> el-upload自定义上传http-request,校验文件、图片大小、宽高,有效阻止上传事件 -> 正文阅读

[网络协议]el-upload自定义上传http-request,校验文件、图片大小、宽高,有效阻止上传事件

问题描述:

element-ui上传组件el-upload如果使用自定义上传http-request,发现before-upload钩子内可以检验图片宽高、大小,但是阻止不了上传事件。

解决方案:

before-upload钩子内使用new Promise同步可有效阻止上传事件,reject()可以阻止。

代码实现:

html部分:

<el-upload
        ref="uploadFile"
        action="#"
        :disabled="disabled"
        list-type="picture-card"
        :accept="accept"
        :limit="limitNum"
        :show-file-list="limitNum>1?true:false"
        :file-list="limitNum>1?fileList:[]"
        :on-preview="handlePictureCardPreview"
        :on-remove="handleRemove"
        :on-exceed="handleExceed"
        :before-upload="customRequest"
        :http-request="handleRequest"
      >
</el-upload>

js部分:

 handleRequest(params: any) {
    // 自定义上传的代码和其他逻辑
    },
 customRequest(file: any) {
        if (props.limitNum === 1) {
          uploadFile.value.clearFiles();
        }
        // 获取图片的宽高
        return new Promise<void>((resolve, reject) => {
          let isLimitSize = true;
          const { size, width, height} = props;

          // 判断图片大小
          if (size) {
            isLimitSize = file.size / 1024 < size;
          }
          if (!isLimitSize) {
            ElMessage.error(`上传图片大小不能超过${size}KB!`);
            reject();
          }
          const fileReader = new FileReader();
          fileReader.onload = () => {
            const result = JSON.parse(`${fileReader.result}`);
            // 判断图片宽高
            if (width && height) {
              const valid = result.w === width && result.h === height;
              if (!valid) {
                ElMessage.error(`上传文件尺寸不符合,只能是${width}*${height}`);
                reject();
              }
            }
            resolve();
          };
          fileReader.readAsText(file);
     });
   },

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:40:48  更:2021-10-28 12:41:20 
 
开发: 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年7日历 -2024/7/3 11:00:01-

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