当前位置: 首页 > article >正文

element plus上传文件 点击确认后文件上传到接口

下面是一个使用 Element Plus 的示例代码,展示了如何实现上传 .xlsx.xls 文件的功能,并在上传后打印文件名和上传状态,同时通过接口将文件以流的形式上传。

安装 Element Plus

首先,确保你已经安装了 Element Plus。可以使用以下命令安装:

npm install element-plus

组件代码示例

<template>
  <div>
    <el-upload
      class="upload-demo"
      drag
      action=""
      :on-change="handleChange"
      :before-upload="beforeUpload"
      multiple
      :file-list="fileList"
      :show-file-list="false"
    >
      <i class="el-icon-upload"></i>
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      <div class="el-upload__tip" slot="tip">只支持.xlsx和.xls文件</div>
    </el-upload>

    <el-button type="primary" @click="submitFiles">确认上传</el-button>

    <div v-if="uploadStatus">
      <p>文件名: {{ uploadedFileName }}</p>
      <p>上传状态: {{ uploadStatus }}</p>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue'
import axios from 'axios'

export default {
  setup() {
    const fileList = ref([])
    const uploadedFileName = ref('')
    const uploadStatus = ref('')

    const handleChange = (file, fileList) => {
      if (file.status === 'ready') {
        uploadedFileName.value = file.name
      }
    }

    const beforeUpload = (file) => {
      const isExcel =
        file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||
        file.type === 'application/vnd.ms-excel'
      if (!isExcel) {
        this.$message.error('上传文件只能是 .xlsx 或 .xls 格式!')
      }
      return isExcel
    }

    const submitFiles = async () => {
      if (fileList.value.length === 0) {
        this.$message.warning('请先选择文件!')
        return
      }

      const formData = new FormData()
      fileList.value.forEach(file => {
        formData.append('files', file.raw) // 将文件添加到 FormData
      })

      try {
        const response = await axios.post('YOUR_API_ENDPOINT', formData, {
          headers: {
            'Content-Type': 'multipart/form-data',
          },
        })
        uploadStatus.value = response.data.success ? '上传成功' : '上传失败'
      } catch (error) {
        uploadStatus.value = '上传发生错误'
        console.error(error)
      }
    }

    return {
      fileList,
      uploadedFileName,
      uploadStatus,
      handleChange,
      beforeUpload,
      submitFiles,
    }
  },
}
</script>

<style>
.upload-demo {
  margin: 20px 0;
}
</style>

功能说明

  1. 文件上传:使用 el-upload 组件实现文件的拖拽和点击上传功能。
  2. 文件类型检查:在 before-upload 钩子中,验证上传文件是否为 .xlsx.xls 格式。
  3. 文件状态管理:在 handleChange 方法中,记录上传的文件名。
  4. 提交文件:通过 Axios 将选中的文件以二进制流的方式上传到指定的 API 接口。
  5. 上传反馈:根据响应结果显示上传状态。

注意事项

  • 请将 'YOUR_API_ENDPOINT' 替换为你的实际 API 地址。
  • 确保后端能够处理 multipart/form-data 类型的请求并正确解析文件流。

这样,你就拥有了一个完整的上传 Excel 文件的功能,可以根据需要进行进一步的调整与扩展。


http://www.kler.cn/news/319422.html

相关文章:

  • Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)
  • 【Java】将一个List拆分使用线程池多线程运行
  • linux进程间通信——消息队列、信号量、ipc设计原理
  • 梧桐数据库(WuTongDB):向量化查询优化器的一些实现细节
  • 傅里叶变换及其应用笔记
  • 使用dom-to-image截图html区域为一张图
  • Redis --- redis事务和分布式事务锁
  • 全栈杂谈第三期 我们用的网络协议是什么
  • 前端css样式覆盖
  • 我的AI工具箱Tauri版-MicrosoftTTS文本转语音
  • 24.9.23学习笔记
  • “永辉优品”会是中国零售的答案吗?
  • 通信工程学习:什么是WLAN无线局域网
  • Python 从入门到实战28(文件的读操作)
  • 从王卫在全球可持续交通高峰论坛上的发言,透视顺丰的变革逻辑
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第十集:制作后坐力系统Recoil和小骑士的生命系统和受伤系统
  • docker容器安装nginx
  • 如何在 Linux 中管理和清理日志文件( `find` 命令按时间批量删除日志)
  • Unity DOTS系列之Struct Change核心机制分析
  • 大模型-模型预训练-训练过程优化配置
  • 【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库
  • 克里金插值算法文件
  • react学习笔记一:react介绍
  • Linux:路径末尾加/和不加/的区别
  • C#版Halcon:HalconDotNet最详细最全面教程(万字详细总结)
  • 算法-回溯
  • 【java入门】JDK的下载安装与环境配置,最新最详细教程!
  • ubuntu错误GPG error: http://repo.mysql.com/apt/ubuntu noble InRelease
  • 01-ZYNQ linux开发环境安装,基于Petalinux2023.2和Vitis2023.2
  • Python pyppeteer 与playwright 模拟浏览器请求 部署服务器遇到的坑