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项目实战总结篇

    Vue项目实战总结篇 总述 本文介绍了Vue项目的实战总结,包括项目的搭建、组件的编写、路由的配置以及API的获取处理等方面。项目通过一个在线购物网站的实例来展示Vue框架在实战应用中的优雅与高效。 项目搭建 在项目搭建方面,我们可以使用Vue CLI工具来快速生成项目框架。具体步骤如下: 安装Vue CLI,可以使用命令 npm install -g @v…

    Vue 2023年5月28日
    00
  • vue.js入门教程之基础语法小结

    针对题目“vue.js入门教程之基础语法小结”的攻略,我将分别从以下几个方面来进行详细讲解。 一、前置知识 在进行Vue.js的学习之前,需要掌握一定的HTML/CSS/JavaScript基础知识。其中JavaScript是最为关键的一个部分,因为Vue.js本身就是一个JavaScript框架。同时,掌握ES6语法,能够在写Vue.js代码时更加便利。 …

    Vue 2023年5月28日
    00
  • vue.js数据绑定的方法(单向、双向和一次性绑定)

    Vue.js是一款流行的JavaScript框架,提供多种数据绑定方法,包括单向绑定、双向绑定和一次性绑定。本文将详细介绍这些方法的原理和使用方法,以及提供两个示例进行说明。 单向绑定 单向绑定是指数据只能从数据模型流向视图,不能反过来。Vue.js通过一个指令v-bind实现单向绑定。该指令的基本语法为:v-bind:属性名=”data” 下面是一个简单的…

    Vue 2023年5月27日
    00
  • 解决axios:”timeout of 5000ms exceeded”超时的问题

    下面是解决axios请求超时问题的完整攻略: 问题描述 在使用axios发送请求时,可能会遇到如下提示:Error: timeout of {time}ms exceeded,这个提示表示请求超时了,请求时间超过了设定的时间限制。这个问题的产生可以是路由问题,也可以是服务器响应时间过长,也有可能是代理服务器的问题。 解决方案 方案一:增加超时时间的限制 在a…

    Vue 2023年5月28日
    00
  • 详解vue与后端数据交互(ajax):vue-resource

    下面是“详解vue与后端数据交互(ajax):vue-resource”的完整攻略,包含以下几个部分: 概述 安装vue-resource 使用示例1:GET请求 使用示例2:POST请求 5.参考链接 1. 概述 Vue.js是一款轻量级、高效的渐进式JavaScript框架,可以用于构建 Web 界面和单页应用程序。而vue-resource是Vue.j…

    Vue 2023年5月28日
    00
  • VUE简单的定时器实时刷新的实现方法

    下面是关于“VUE简单的定时器实时刷新的实现方法”完整攻略: 1. 环境 首先,需要在Vue应用程序中安装Node.js和npm包管理器。使用npm安装vue和vue-router库,以及vue-cli脚手架。 2. 定时器原理 定时器是一种重复执行某个操作的技术。在Vue中,常用的定时器方法是setInterval(),它将函数重复执行,直到定时器被清除。…

    Vue 2023年5月29日
    00
  • Vue项目环境搭建详细总结

    Vue项目环境搭建详细总结 在开始Vue.js开发时,需要先搭建好开发环境,本文将介绍如何快速搭建一个Vue.js的开发环境。 准备工作 首先需要安装 Node.js,Node.js是一个基于Chrome V8引擎的JavaScript运行环境。安装完Node.js后,检查Node.js及npm是否安装成功: node -v npm -v 如果正确地输出版本…

    Vue 2023年5月27日
    00
  • mpvue中使用flyjs全局拦截的实现代码

    mpvue是一个能够基于Vue.js快速开发小程序的框架。与Vue.js类似,mpvue的语法和API几乎与之相同,开发者可以在短时间内熟练掌握其使用。而flyjs是一个优秀的基于Promise的HTTP请求库,能够支持拦截器等高级功能。本文将详细讲解在mpvue中使用flyjs全局拦截的实现代码,以及两个示例说明。 安装和使用flyjs 首先,在mpvue…

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