el-upload手动上传图片,上传后隐藏上传样式(el-upload上传单张图片,vue2)

news2024/11/15 22:46:16

简介:上期介绍了使用el-upload上传文件,这次来介绍一下如何使用el-upload上传图片,只能上传一次,上传图片后隐藏上传按钮部分。

实现效果图:

1、首先,想要在项目中使用el-upload组件,同样,得保证项目中已经安装且引入了该组件,具体安装及引入可见上篇文章。

el-upload下载使用icon-default.png?t=N7T8https://blog.csdn.net/weixin_65793170/article/details/132627341?spm=1001.2014.3001.5501

2、然后直接在vue组件中使用。


<el-upload 
    class="upload_box" 
    ref="upload" 
    :limit="limitNum" 
    :class="{ uploadHide: hideUploadEdit }"                
    :on-change="handleEditChange" 
    :http-request="ImgUploadSectionFile"
    :before-upload="beforeAvatarUpload" 
    :with-credentials="true" 
    :auto-upload="true"
    accept=".png, .jpg" 
    list-type="picture-card" 
    :file-list="fileList"
    action=""
    >
        <!-- 加号标识 -->
        <i slot="default" class="el-icon-plus"></i>
        <!-- 上传后显示 -->
        <div slot="file" slot-scope="{file}">
            <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
            <span class="el-upload-list__item-actions">
                <!-- 图片放大 -->
                <span class="el-upload-list__item-preview"                                     
                      @click="handlePictureCardPreview(file)">
                 <i class="el-icon-zoom-in"></i>
                </span>
                <!-- 图片放大 -->
                <span v-if="!disabled" 
                      class="el-upload-list__item-delete"
                      @click="handleRemove(file)">
                 <i class="el-icon-delete"></i>
                </span>
            </span>
        </div>
</el-upload>

当然,上传处也可以换成按钮或者其它,像这样,

上传处替换成按钮,代码多去少补,

<el-upload 
    class="upload_box" 
    ref="upload" 
    :limit="limitNum" 
    :class="{ uploadHide: hideUploadEdit }"                
    :on-change="handleEditChange" 
    :http-request="ImgUploadSectionFile"
    :before-upload="beforeAvatarUpload" 
    :with-credentials="true" 
    :auto-upload="true"
    accept=".png, .jpg" 
    :file-list="fileList"
    action=""
    >
        <!-- 上传按钮 -->
        <el-button 
            class="upload_btn" 
            slot="trigger" 
            size="small" 
            type="primary">
            上传图片
            <i class="el-icon-upload el-icon--right"></i>
        </el-button>
        <!-- 上传后显示 -->
        <div slot="file" slot-scope="{file}">
            <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
            <span class="el-upload-list__item-actions">
                <!-- 图片放大 -->
                <span class="el-upload-list__item-preview"                                     
                      @click="handlePictureCardPreview(file)">
                 <i class="el-icon-zoom-in"></i>
                </span>
                <!-- 图片放大 -->
                <span v-if="!disabled" 
                      class="el-upload-list__item-delete"
                      @click="handleRemove(file)">
                 <i class="el-icon-delete"></i>
                </span>
            </span>
        </div>
</el-upload>

因为这里是本地图片测试上传,所以组件中的action属性为空,上传到接口,还需另行配置。

3、相关必要样式和属性介绍。

// 隐藏上传按钮
::v-deep .uploadBox_hide .el-upload--picture-card {
    display: none;
}
// 搭配动态 :class 使用
:class="{ uploadBox_hide: hideUploadEdit }" 


这个样式用于,去掉添加/删除文件时的过渡动画
// ::v-deep .el-upload-list__item {
//     transition: none !important;
// }


      :limit="limitNum" //最大允许上传个数
      :class="{hide:hideUploadEdit}" //加类名为了隐藏上传样式
      :on-remove="handleRemove" //文件列表移除文件时的钩子
      :on-change="handleEditChange" //文件状态改变时的钩子(可以限制文件数量和文件大小)
      :http-request="ImgUploadSectionFile" //覆盖默认的上传行为,实现手动上传
      :before-upload="beforeAvatarUpload" //上传文件之前的钩子
      :with-credentials="true" //支持发送 cookie 凭证信息
      :auto-upload="true" //是否在选取文件后立即进行上传(不知什么原因false没效果)
      accept=".png, .jpg" //接受上传的文件类型
      action="" //手动上传不需要填写url
      list-type="picture-card" //设置文件列表的样式
      :file-list="fileList" //上传的文件列表

4、上传相关事件。

       // 放大图片
        handlePictureCardPreview(file) {
            this.dialogImageUrl = file.url;
            this.dialogVisible = true;
        },
        // 删除图片
        handleRemove(file, fileList) {
            if (this.fileList.length === 0) {
                this.fileList = [];
            } else {
                let dl = this.fileList.indexOf(file);
                this.fileList.splice(dl, 1);
            }
            this.hideUploadEdit = this.fileList.length >= this.limitNum;
        },

        // on-change添加文件,上传成功和上传失败时都会被调用
        handleEditChange(file, fileList) {
            this.hideUploadEdit = fileList.length >= this.limitNum;
            // console.log("this.fileList:", this.fileList);
            // console.log("this.hideUploadEdit:", this.hideUploadEdit);
        },

        // http-request自定义上传
        ImgUploadSectionFile(param) {
            this.param = param;
        },

        // before-upload上传文件之前的钩子,参数为上传的文件
        // 若返回 false 或者返回 Promise 且被 reject,则停止上传
        beforeAvatarUpload(file) {
            const isJPG = file.type === "image/jpeg" || file.type === "image/png";
            const isLt2M = file.size / 1024 / 1024 < 2;
            if (!isJPG) {
                this.$message.error("上传图片只能是 JPG 或 PNG 格式!");
            }
            if (!isLt2M) {
                this.$message.error("上传图片大小不能超过 2MB!");
            }
            return isJPG && isLt2M;
        },

        // 文件上传成功时的钩子
        handleSuccess(file) {
            // console.log(file);
            const data = file.data;
            //然后数据、逻辑处理
        },

创作不易,感觉有用,就点赞、收藏加关注,感谢(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ios app开发环境搭建

Xcode是Apple iOS的应用市场app store移动应用的开发工具&#xff0c;支持不同设备、不同应用场景的开发&#xff0c;本文主要描述xcode开发工具开发环境的搭建。 如上所示&#xff0c;在macos中&#xff0c;使用app store安装xcode开发工具 如上所示&#xff0c;在macos中&…

陪诊系统|陪诊助浴系统|养老护理系统开发功能

助浴陪诊小程序是一款为老年人提供贴心服务的手机应用&#xff0c;旨在帮助老年人在家中就能享受到专业的助浴和陪诊服务。该程序通过简单易用的界面和人性化的设计&#xff0c;为老年人提供全面的护理服务。 1、用户注册登录 为了提供更好的服务&#xff0c;用户需要注册并登…

线性系统时域分析

1、稳定性分析 2、动态品质的求取 3、稳定误差计算 典型输入信号&#xff1a; 1、抛物线函数(等加速度阶跃函数) 2、单位阶跃函数 3.斜坡函数 A1,是单位阶跃函数1(t) 4.脉冲函数 A0 记为 动态过程和稳态过程 超调量&#xff1a;&#xff08;系统最大值-系统稳态值&…

基于Qt C++的工具箱项目源码,含命令行工具、桌面宠物、文献翻译、文件处理工具、医学图像浏览器、插件市场、设置扩展等工具

一、介绍 1. 基本信息 完整代码下载地址&#xff1a;基于Qt C的工具箱项目源码 TBox是一款基于Qt C的工具箱。用户可以自行选择安装所需的工具&#xff08;以插件的形式&#xff09;&#xff0c;将TBox打造成专属于自己的效率软件。TBox基本界面展示如下&#xff1a; 2. 使用…

视频转二维码简单技巧,适用多种视频格式

现在很多商品介绍多是以视频的方式来展现&#xff0c;那么为了方便用户能够同时快速获取视频内容&#xff0c;所以很多的商家现在会将视频生成二维码放到宣传单、展板、海报等宣传内容上&#xff0c;让他人通过扫码获取信息。那么视频二维码生成器的使用方法有哪几个步骤呢&…

【webUI】gradio基础使用2——Gallery组件显示多张图片

参考&#xff1a;https://www.gradio.app/docs/gallery | 参考代码&#xff08;老版本&#xff0c;有错误&#xff09; gradio基础使用1&#xff1a;https://blog.csdn.net/imwaters/article/details/131400571 说明 基于python的浏览器上多图片显示&#xff0c;是很多复杂程序…

袖口收缩包装机包装效果如何调整

袖口收缩包装机是一种使用非常广泛的包装设备&#xff0c;老百姓最常见的啤酒瓶和可乐瓶的包装就是袖口包装&#xff0c;我们看到的成品效果都是非常好的&#xff0c;那是因为厂商在出厂时已经对设备进行了非常好的调试&#xff0c;那么对于初次使用或者已经使用了&#xff0c;…

Pulsar 之架构,客户端以及多区域容灾

Pulsar 之架构&#xff0c;客户端以及多区域容灾 架构BrokersClusters元数据存储配置存储区持久存储Apache BookKeeperLedgersLedgers读一致性托管Ledgers 日志存储 Pulsar 代理服务发现 Pulsar client(客户端)客户端设置阶段Reader interface 多区域容灾备份(GEO-REPLICATION)…

《向量数据库指南》——宏观解读向量数据库Milvus Cloud

宏观解读向量数据库 如今,强大的机器学习模型配合 Milvus 等向量数据库的模式已经为电子商务、推荐系统、语义检索、计算机安全、制药等领域和应用场景带来变革。而对于用户而言,除了足够多的应用场景,向量数据库还需要具备更多重要的特性,包括: 可灵活扩展、支持调参:当…

恶意样本自动化配置提取初探

前言&#xff1a; 本篇参考 github 上 [CAPEv2](CAPEv2/Emotet.py at f2ab891a278b2875c79b4f2916d086f870b54ed5 kevoreilly/CAPEv2 (github.com)) 沙箱的提取代码&#xff0c;在前面奇安信攻防社区-APT 恶意 DLL 分析及 C2 配置提取&#xff08;子 DLL 篇&#xff09; 分析…

three.js入门 ---- 相机控件OrbitControls

前言&#xff1a; 自用&#xff01;&#xff01;&#xff01; 文档中描述&#xff1a;OrbitControls本质上就是改变相机的参数&#xff0c;比如相机的位置属性&#xff0c;改变相机位置可以改变相机拍照场景中模型的角度&#xff0c;实现模型的360度旋转预览效果&#xff0c;改…

彻底颠覆无线蓝牙,华为全新黑科技「星闪」有何魅力

内容开始前先发个灵魂拷问&#xff0c;还有多少人日常在用着有线耳机&#xff1f; 别怪咱们抛弃多年旧爱&#xff0c;实在是 TWS 无线耳机便捷真香&#xff0c;用了就回不去啊喂。 咳咳&#xff0c;开个玩笑&#xff0c;不是不愿意用有线耳机&#xff0c;而是这年头「极为先进…

多任务学习

前言 一般的机器学习模型都是针对单一的特定任务&#xff0c; 比如手写体数字识别 、 物体检测等&#xff0e; 不同任务的模型都是在各自的训练集上单独学习得到的 &#xff0e; 如果有两个任务比较相关&#xff0c; 它们之间会存在一定的共享知识 &#xff0c; 这些知识对两个…

命令执行绕过 [GXYCTF2019]Ping Ping Ping1

参考原文&#xff1a;CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤_Tr0e的博客-CSDN博客文章目录前言CTF题目绕过姿势命令联合执行关键词的绕过内联执行绕过多种解法变量拼接内联执行Base64编码总结前言为了备战&#xff08;划水&#xff09;5 月份广东省的 “红帽杯” 网络…

用路由器远程维护三菱PLC操作指南

用路由器远程维护三菱PLC操作指南

基于Linux上MySQL8.*版本的安装-参考官网

本地hadoop环境安装好,并安装好mysql&#xff0c;下载hive安装包 mysql下载地址及选择包 MySQL :: Download MyS的QL Community Server (Archived Versions) mysql安装步骤 下载与上传解压给权限 #mysql安装包上传到/opt下 cd /usr/local/ #解压到此目录 tar -xvf /opt/mys…

全网最牛,docker容器搭建—Jenkins+Python+Allure自动化测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、安装docker 安…

外汇天眼:eToro 2022年收入暴跌 57%

eToro (UK) 在 2021-2022 年 IPO 上市尝试失败后大幅削减成本&#xff0c;导致业务活动急剧下降&#xff0c;其估值也在过去两年中稳步下降。 外汇天眼温馨提醒&#xff1a;在做外汇交易之前&#xff0c;一定要审核清楚外汇平台的资质以及官网信息&#xff0c;以防上当受骗&…

c++视觉处理 ------ 反向投影图和直方图的变化

通道混合&#xff1a;cv::mixChannels cv::mixChannels 是 OpenCV 中的一个函数&#xff0c;用于执行通道混合或通道分离操作。通常情况下&#xff0c;这个函数用于处理多通道图像&#xff0c;允许你从多通道图像中提取或重新排列通道&#xff0c;或者将不同通道的数据组合到一…

用于物体识别和跟踪的下游任务自监督学习-2-(计算机视觉中的距离度量+损失函数)

2.4 计算机视觉中的距离度量 在深度学习和计算机视觉中&#xff0c;距离度量通常用于比较图像、视频或其他数据的特征或嵌入。根据具体任务和数据属性&#xff0c;可以使用不同类型的距离度量。下面介绍了深度学习和计算机视觉中使用的一些常见类型的距离度量。 余弦相似性距…