el-upload如何自定展示上传的文件

ops/2024/9/24 21:58:55/

 Element UI 中,el-upload 组件支持通过插槽(slot)来自定义文件列表的展示方式。这通常是通过 file-list 插槽来实现的。下面是一个使用 el-upload 组件并通过 file-list 插槽来自定义文件列表展示的完整示例代码。

在这个示例中,我将展示如何自定义每个文件的显示方式,包括文件名、文件大小、上传进度和删除操作。

<template>  <div>  <el-upload  class="upload-demo"  action="你的文件上传接口URL"  :on-preview="handlePreview"  :on-remove="handleRemove"  :file-list="fileList"  :auto-upload="true" <!-- 设置为true以自动上传文件 -->  :on-change="handleChange"  :on-progress="handleProgress" <!-- 监听上传进度 -->  multiple  >  <el-button slot="trigger" size="small" type="primary">选取文件</el-button>  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>  <!-- 自定义文件列表 -->  <div slot="file" slot-scope="{file}"><div class="file-name">{{ file.name }}</div>  <div class="file-size">{{ formatFileSize(file.size) }}</div>  <div v-if="file.percentage" class="file-progress">{{ file.percentage }}%</div>  <el-button  size="mini"  type="danger"  @click="handleRemove(file.name, fileList, index)"  >删除</el-button>  </div>  </el-upload>  </div>  
</template>  <script>  
export default {  data() {  return {  fileList: []  };  },  methods: {  handlePreview(file) {  console.log('preview', file);  },  handleRemove(fileName, fileList, index) {  const removedFile = fileList.find(f => f.name === fileName);  if (removedFile) {  // 停止上传(如果支持的话)  // 注意:Element UI 的 el-upload 组件没有直接提供停止上传的API  // 但你可以通过其他方式(如取消XHR请求)来实现  // 然后从fileList中移除文件  this.$set(fileList, index, null);  fileList.splice(index, 1);  }  },  handleChange(file, fileList) {  // 这里通常不需要手动修改fileList,除非你有特殊的处理逻辑  },  handleProgress(event, file, fileList) {  // 更新文件的上传进度  for (let i = 0; i < fileList.length; i++) {  if (fileList[i].raw === file.raw) {  fileList[i].percentage = event.percent; // 假设event.percent是上传进度百分比  break;  }  }  },  formatFileSize(size) {  if (size / 1024 > 1024) {  return (size / 1024 / 1024).toFixed(2) + ' MB';  } else {  return (size / 1024).toFixed(2) + ' KB';  }  }  }  
};  
</script>  <style>  
.upload-file-list .upload-file-item {  margin-top: 10px;  display: flex;  justify-content: space-between;  align-items: center;  
}  .upload-file-list .file-name,  
.upload-file-list .file-size {  margin-right: 10px;  
}  
</style>

请注意,在上面的代码中,我通过 handleRemove 方法手动从 fileList 中删除了文件。然而,在 Element UI 的正常用法中,如果你使用了 :file-list="fileList" 绑定,并且你的上传逻辑(包括删除)都通过 Element UI 的事件(如 @remove)来处理,那么你可能不需要在 handleRemove 方法中手动操作 fileList。但在某些情况下,你可能需要更细粒度的控制,这时就需要手动操作了。

此外,action 属性应该指向你的实际文件上传接口。我在示例中使用了 https://jsonplaceholder.typicode.com/posts/ 作为示例,这只是一个返回JSON数据的占位符API,并不支持文件上传。你需要将其替换为你的实际文件上传接口。


http://www.ppmy.cn/ops/115485.html

相关文章

2017年国赛高教杯数学建模C题颜色与物质浓度辨识解题全过程文档及程序

2017年国赛高教杯数学建模 C题 颜色与物质浓度辨识 比色法是目前常用的一种检测物质浓度的方法&#xff0c;即把待测物质制备成溶液后滴在特定的白色试纸表面&#xff0c;等其充分反应以后获得一张有颜色的试纸&#xff0c;再把该颜色试纸与一个标准比色卡进行对比&#xff0c…

牛客小白月赛101(A~E)

文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题&#xff0c;昨天晚上打的这场牛客月赛打的很烂&#xff0c;隔几天不刷题感觉自己的…

把设计模式用起来!(4) 用不好模式?之原理不明

&#xff08;清华大学出版社 《把设计模式用起来》书稿试读&#xff09; 上一篇&#xff1a;把设计模式用起来&#xff01;&#xff08;3&#xff09;用不好模式&#xff1f;之时机不对 为什么用不好设计模式&#xff1f;——原理不明 难搞的顾客&#xff1a;“抹这种霜&#…

Elasticsearch:检索增强生成背后的重要思想

作者&#xff1a;来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点&#xff0c;我九年级的女儿哭着冲进我的房间。她说她对代数一无所知&#xff0c;注定要失败。我进入超级妈妈模式&#xff0c;却发现我一点高中数学知识都不记得了。于是&#xff0c;我做了任何一位超级妈…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目&#xff0c;包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题&#xff0c;可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题 本文摘录于&#xff1a;https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 先参考上面的文章做如下修改: …

网络:TCP协议-报头字段

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 文章目录 前言一、TCP协议格式16位源端口号 和 16位目的端口号4位首部长度16位窗口大小32位序号 和 32位确认序号6种标记位 和 16位紧急指针 总结 前言 本文是我对于TCP协…

集群聊天服务器项目【C++】(六)MySql数据库

前面已经介绍了网络模块和业务模块&#xff0c;本章介绍数据模块&#xff0c;同样保持模块解耦的特性&#xff0c;即业务模块不能出现数据模块内容&#xff0c;如出现SQL语句&#xff0c;接下来看看怎么实现的。 1.环境安装 第一章已经介绍了MySql安装&#xff0c;但注意需要…