vue使用el-upload实现文件上传功能

  1. 确定需求及环境配置

在使用el-upload组件之前,首先需要确定需求以及进行环境配置。

需求:实现上传文件功能,支持单文件和多文件上传,显示上传进度及结果。

环境配置:Vue.js和Element UI组件库的安装和引入。可以通过npm进行安装:

npm install vue --save
npm install element-ui --save

引入Vue和Element组件库:

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)
  1. 创建上传组件

在Vue组件中,通过el-upload组件实现文件上传功能。

<template>
  <el-upload
    :action="uploadUrl"    //上传文件的url地址
    :multiple="multiple"   //是否支持多文件上传
    :auto-upload="false"   //是否开启自动上传
    :show-file-list="false"//是否显示已上传的文件列表
    ref="upload"
    :on-success="onSuccess"//上传成功回调函数
    :on-error="onError"    //上传失败回调函数
  >
    <el-button size="small" type="primary">选择文件</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  </el-upload>
</template>

<script>
export default {
  data() {
    return {
      uploadUrl: '/upload',  //上传文件的url地址
      multiple: true,        //是否支持多文件上传
    }
  },
  methods: {
    //上传成功
    onSuccess(response, file, fileList) {
      console.log(fileList)
    },
    //上传失败
    onError (err) {
      console.log(err)
    }
  }
}
</script>

其中,el-upload组件具有多个属性,特别需要说明的是:

  • action:上传文件的url地址;
  • multiple:是否支持多文件上传;
  • auto-upload:是否开启自动上传;
  • show-file-list:是否显示已上传的文件列表。

同时,el-upload组件提供了两个回调函数:

  • onSuccess:上传成功后的回调函数,在此函数中可以获取到上传的文件信息;
  • onError:上传失败后的回调函数,在此函数中可以获取到上传失败的原因信息。

  • 添加上传按钮

在el-upload组件包裹的区域中添加一个上传按钮,用于触发上传文件功能。

<el-upload
  :action="uploadUrl"    //上传文件的url地址
  :multiple="multiple"   //是否支持多文件上传
  :auto-upload="false"   //是否开启自动上传
  :show-file-list="false"//是否显示已上传的文件列表
  ref="upload"
  :on-success="onSuccess"//上传成功回调函数
  :on-error="onError"    //上传失败回调函数
>
  <el-button size="small" type="primary">选择文件</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
<el-button type="primary" @click="submitUpload">上传至服务器</el-button>

其中,点击“选择文件”按钮,会弹出系统文件选择框,选择需要上传的文件;点击“上传至服务器”按钮,会将选择的文件上传至服务器。

  1. 触发上传功能

在el-upload组件中,有两种方式触发上传功能:自动上传和手动上传。

手动上传需要在上传按钮触发的方法中,通过调用el-upload组件的upload方法来实现:

submitUpload() {
  //手动上传文件
  this.$refs.upload.submit()
}

这样,点击“上传至服务器”按钮时,就会调用submitUpload方法,从而手动触发上传功能。

  1. 示例说明

在上述步骤完成后,我们来看两个简单的示例:单文件上传和多文件上传。

示例一:单文件上传

需要上传文件:1张图片。

代码演示:

<template>
  <el-upload
    :action="uploadUrl"    //上传文件的url地址
    :multiple="false"      //是否支持多文件上传
    :auto-upload="false"   //是否开启自动上传
    :show-file-list="false"//是否显示已上传的文件列表
    ref="upload"
    :on-success="onSuccess"//上传成功回调函数
    :on-error="onError"    //上传失败回调函数
  >
    <el-button size="small" type="primary">选择文件</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  </el-upload>
  <el-button type="primary" @click="submitUpload">上传至服务器</el-button>
</template>

<script>
export default {
  data() {
    return {
      uploadUrl: '/upload',  //上传文件的url地址
    }
  },
  methods: {
    //上传成功
    onSuccess(response, file, fileList) {
      console.log(fileList)
    },
    //上传失败
    onError (err) {
      console.log(err)
    },
    //手动上传文件
    submitUpload() {
      this.$refs.upload.submit()
    }
  }
}
</script>

点击“选择文件”按钮,选择一张图片后,点击“上传至服务器”按钮,即可完成文件上传的过程。

示例二:多文件上传

需要上传文件:2张图片。

代码演示:

<template>
  <el-upload
    :action="uploadUrl"    //上传文件的url地址
    :multiple="true"       //是否支持多文件上传
    :auto-upload="false"   //是否开启自动上传
    :show-file-list="false"//是否显示已上传的文件列表
    ref="upload"
    :on-success="onSuccess"//上传成功回调函数
    :on-error="onError"    //上传失败回调函数
  >
    <el-button size="small" type="primary">选择文件</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  </el-upload>
  <el-button type="primary" @click="submitUpload">上传至服务器</el-button>
</template>

<script>
export default {
  data() {
    return {
      uploadUrl: '/upload',  //上传文件的url地址
    }
  },
  methods: {
    //上传成功
    onSuccess(response, file, fileList) {
      console.log(fileList)
    },
    //上传失败
    onError (err) {
      console.log(err)
    },
    //手动上传文件
    submitUpload() {
      this.$refs.upload.submit()
    }
  }
}
</script>

点击“选择文件”按钮,选择2张图片后,点击“上传至服务器”按钮,即可完成文件上传的过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue使用el-upload实现文件上传功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 如何理解Vue的render函数的具体用法

    Vue的render函数是Vue的核心功能之一,它可以帮助我们实现更强大和自由度更高的组件化。如果你能够掌握Vue的render函数的具体用法,可以针对项目需求定制化你的组件,从而更好地实现业务需求。 以下是如何理解Vue的render函数的具体用法的完整攻略: 什么是Vue的render函数 Vue的render函数是一个高阶函数,它用来描述一个Vue组件…

    Vue 2023年5月27日
    00
  • vue+jsplumb实现工作流程图的项目实践

    下面我将详细讲解一下“vue+jsplumb实现工作流程图的项目实践”的攻略步骤。 步骤一:安装vue及相关插件 第一步是安装Vue.js,可以使用npm或yarn进行安装。同时,还需要安装Vue Router和Vue Resource插件来支持我们实现跨组件通信和网络请求。 npm install vue vue-router vue-resource -…

    Vue 2023年5月28日
    00
  • vue3+ts使用APlayer的示例代码

    下面是详细的“vue3+ts使用APlayer的示例代码”的攻略: 准备工作 安装vue-cli:打开终端,执行命令 npm install -g @vue/cli 创建vue项目:执行命令 vue create vue-aplayer-demo 安装APlayer插件:执行命令 npm install aplayer –save 安装TypeScript…

    Vue 2023年5月27日
    00
  • Vue3获取DOM节点的3种方式实例

    下面是Vue3获取DOM节点的3种方式实例的详细攻略: 1. 通过ref引用获取DOM节点 我们可以给DOM元素添加ref属性,然后在Vue模板中通过ref的值进行引用,从而获取DOM节点。具体操作步骤如下: 在Vue模板中添加ref属性 <template> <div> <button ref="btn"&…

    Vue 2023年5月28日
    00
  • 关于vue项目部署后刷新网页报404错误解决

    针对题目“关于vue项目部署后刷新网页报404错误解决”的问题,我将给出完整攻略,并给出两个示例说明。 问题背景 在vue项目部署后,当在浏览器上进行刷新时,会出现404 Not Found错误,这是因为部署后的静态文件资源没有被正确地映射到服务器的URL路径上。 解决方法 部署vue项目后,需要在服务器端配置URL路径的映射规则,将浏览器请求的URL路径指…

    Vue 2023年5月28日
    00
  • Vue3.2 新增指令 v-memo 用法详解(提高性能利器)

    我将为您详细讲解“Vue3.2 新增指令 v-memo 用法详解(提高性能利器)”的完整攻略。 简介 Vue 3.2 新增了 v-memo 指令,它专门用于对 Vue 组件进行记忆化优化。记忆化优化可以提高应用程序的运行效率,减少重复渲染和计算,从而大大提高应用程序的性能。 记忆化优化是一种重新运行的策略,该策略中,在组件生成后,不在计算过程中多次工作。所以…

    Vue 2023年5月29日
    00
  • Vue替代vuex的存储库Pinia详细介绍

    关于“Vue替代vuex的存储库Pinia详细介绍”的攻略,我会详细讲解以下几个方面: 什么是Pinia Pinia 的使用方式 Pinia 与 Vuex 的比较 示例说明 1. 什么是Pinia Pinia 是一个基于 Vue 3 的状态管理库,它的官方网站是 https://pinia.esm.dev/ 。 Pinia 是按功能设计的,让您可以轻松管理V…

    Vue 2023年5月27日
    00
  • vue实现自定义日期组件功能的实例代码

    实现自定义日期组件功能是一个常见的需求,在 Vue 中可以通过以下步骤实现: 创建组件 首先需要创建一个 Vue 组件,用来展示日期组件的样式和逻辑。在组件中可以使用 data 属性来保存当前日期和选中的日期等状态数据,使用 methods 属性里的方法来处理日期变化和用户操作事件。具体代码示例如下: <template> <div cla…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部