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

【vue】使用 el-upload+axis实现手动多文件上传的代码实现

代码实现

以下是一个使用Element UI的el-upload和Axios实现手动多文件上传的示例代码:

<template>
  <div>
    <el-upload
      ref="upload"
      action="/upload"
      :auto-upload="false"
      :on-change="handleUploadChange"
      :file-list="fileList"
      multiple
    >
      <el-button size="small" type="primary">选择文件</el-button>
    </el-upload>
    <el-button size="small" type="success" @click="uploadFiles">上传文件</el-button>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      fileList: []
    }
  },
  methods: {
    handleUploadChange(file, fileList) {
      this.fileList = fileList
    },
    uploadFiles() {
      const formData = new FormData()
      for (let i = 0; i < this.fileList.length; i++) {
        formData.append('file', this.fileList[i].raw)
      }
      axios.post('/upload', formData)
        .then(response => {
          console.log(response.data)
        })
        .catch(error => {
          console.error(error)
        })
    }
  }
}
</script>

说明

在上面的代码中,我们首先使用el-upload组件创建了一个文件上传输入框,并设置multiple属性以允许用户选择多个文件。接着,在按钮上添加了一个@click事件处理程序,用于在用户选择文件后手动触发上传操作。

在uploadFiles()方法中,我们首先创建了一个FormData对象,并将所有要上传的文件添加到该对象中。然后,我们使用Axios发送一个POST请求,将FormData对象作为第二个参数传递给该方法。当服务器返回响应时,我们可以在.then回调函数中访问响应数据。如果发生错误,则可以在.catch回调函数中访问错误信息。

需要注意的是,在上传文件之前,我们必须先将文件添加到FormData对象中,这里使用了this.fileList[i].raw来获取每个要上传的文件的原始数据。另外,由于我们将自动上传(auto-upload)属性设置为false,因此需要通过handleUploadChange()方法将选择的文件列表保存到组件状态中(fileList)。


http://www.kler.cn/a/7491.html

相关文章:

  • go环境搭建
  • 【SpringBoot】公共字段自动填充
  • nginx源码安装配置ssl域名
  • TypeORM在Node.js中的高级应用
  • Elasticsearch 8.16.0:革新大数据搜索的新利器
  • 【Python进阶】Python中的数据库交互:使用SQLite进行本地数据存储
  • 国内ChatGPt研发-中国chatGPT
  • VB execl函数 word文档 KBS
  • Canal增量数据订阅和消费——原理详解
  • ansible自动运维——看明白ansible.cfg配置文件
  • 【Linux】环境变量进程虚拟地址空间
  • MySQL 索引常见问题汇总,一次性梳理
  • React 组件的 children 数据使用
  • Android 10.0 系统framework发送悬浮通知的流程分析
  • 在CentOS 7 中安装Hive-1.2.2
  • 【一起撸个DL框架】1 绪论
  • FPGA纯verilog实现UDP通信,三速网自协商仲裁,动态ARP和Ping功能,提供工程源码和技术支持
  • 多线程-模拟抢红包,抽奖池
  • 设计模式-day03
  • ChatGPT给自己写的科普性文章,你们认为写的怎样
  • echarts tooltip文字太长换行
  • Java多线程与并发
  • 把ChatGPT接入我的个人网站
  • Docker容器理解
  • Hadoop学习笔记(持续更新中)
  • Windows 元件