element中使用formdata进行上传文件的方法

 更新时间:2023年03月29日 08:36:57   作者:lilly呀  
本文主要介绍了elementUI中使用formdata进行上传文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

在使用elementUI文档的时候,上传图片的组件,使用了formdata的方式,第一次使用,在此记录一下。根据文档,就是在上传的时候,有一个上传图片的接口,点击上传之后会返回给你一个网络路径,再将网络路径跟表单的其他的信息通过提交接口,提交到后台即可。

在这里插入图片描述

一、el-upload中的相关参数

<!--上传图片-->
          <el-upload
            ref="upload"
            :headers="headers"
            class="upload-demo"
            :class="showUpload === true ? 'show-upload-pic' : ''"
            :limit="5"
            :action="uploadUrl"
            :data="data"
            :file-list="fileList"
            list-type="picture-card"
            :on-success="handleAvatarSuccess"
            :on-preview="handlePictureCardPreview"
            :on-remove="handleRemove"
            :on-change="changeBigImg"
          >
            <i class="el-icon-plus" />
          </el-upload>
          <!--上传图片-->

①action必选参数

action:必选参数,上传的地址

//上传的地址,可以根据不同的环境配置不同的跳转地址
created() {
    if (process.env.NODE_ENV === "test" || process.env.NODE_ENV === "development") {
      this.uploadUrl = 'https://test.../common/upload_files';
    } else if (process.env.NODE_ENV === "production") {
      this.uploadUrl = 'https://operate.../common/upload_files';
    }
  },

②http-request实现自定义上传
但是,如果后台只给你一个接口,让你通过formdata来提交。通过查看api发现,还有个方法可以实现自定义上传。

http-request:覆盖默认的上传行为,可以自定义上传的实现。

用这个方法之前,我们还要将auto-upload设置成false.

auto-upload:是否在选取文件后立即进行上传

③headers设置上传的请求头部

headers:设置上传的请求头部

<script>
//可以添加请求的token
import { getToken } from '@/utils/auth'
export default{
	data(){
		return{
			headers:{
				authorization: getToken()
			},
			 data: {
        		projectCode: '',
        		projectVer: '',
        		imageBits: ''
      		},
      		fileList: [],
		}
	},
}
</script>
import Cookies from 'js-cookie'

const TokenKey = 'token'

export function getToken() {
  return Cookies.get(TokenKey)
}

④on-preview点击文件列表中已上传的文件时的钩子

on-preview:点击文件列表中已上传的文件时的钩子

handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogUpload = true;
},

⑤on-remove文件列表移除文件时的钩子

// 删除文件时,将相关参数清空,进行处理操作
    handleRemove(file, fileList, response) {
      this.saveParam.urls = '';

      for (let i = 0; i < this.imgArrs.length; i++) {
        if (file.response) {
          if (this.imgArrs[i] === file.response.data[0].imgUrl) {
            this.imgArrs.splice(i, 1);
          }
        } else {
          if (this.imgArrs[i] === file.url) {
            this.imgArrs.splice(i, 1);
          }
        }
      }
      const result = this.imgList.split(",");

      for (let i = 0; i < result.length; i++) {
        if (file.response) {
          if (result[i] === file.response.data[0].imgUrl) {
            result.splice(i, 1);
          }
        } else {
          if (result[i] === file.url) {
            result.splice(i, 1);
          }
        }
      }

      this.imgListCopy = ''; // 重新赋值
      for (let i = 0; i < result.length; i++) {
        this.imgList += result[i] + ",";
        if (result[i] !== '') {
          this.imgListCopy += result[i] + ",";
        }
      }
      this.imgList = this.imgListCopy;

      if (fileList.length < 5) {
        this.showUpload = false;
      }
    },

⑥on-success文件上传成功时的钩子

on-success:文件上传成功时的钩子

//在文件上传成功时,将相关参数进行赋值操作
handleAvatarSuccess(res, fileList) {
      let imgArr = '';

      imgArr = res.data[0].imgUrl;
      this.imgList += imgArr + ",";

      this.imgArrs.push(imgArr);
      if (this.imgArrs.length > 4) {
        this.showUpload = true;
      } else {
        this.showUpload = false;
      }
    },

图片展示:

在这里插入图片描述

调用接口的情况:

在这里插入图片描述

在这里插入图片描述

⑦on-change文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用

on-change:文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用

// 上传图片的验证
changeBigImg(file, fileList) {
   this.bigFileList = fileList
   this.bigFile = file
}

二、扩展–如何在上传超过5张图片后,隐藏上传按钮

通过查看代码,发现上传按钮,是通过.el-upload–picture-card标签进行控制的,那么是不是可以在照片数量达到上限时,通过display: none;来控制显示和隐藏呢?直接对el-upload–picture-card不好控制,那么就通过判断数量,加上动态类名来控制。

<style>
.show-upload-pic .el-upload--picture-card {
  display: none;
}
</style>
if (fileList.length < 5) {
    this.showUpload = false;
}

if (this.imgArrs.length > 4) {
    this.showUpload = true;
} else {
    this.showUpload = false;
}

if (this.fileList.length >= 5) {
    this.showUpload = true;
} else {
    this.showUpload = false;
}

参考博客

elementUI 上传文件使用formdata
elementUI

到此这篇关于elementUI中使用formdata进行上传文件的文章就介绍到这了,更多相关elementUI中使用formdata进行上传文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue 3集成海康Web插件实现视频监控功能

    Vue 3集成海康Web插件实现视频监控功能

    本文详细介绍了如何使用 Vue 3 框架集成海康Web插件实现视频监控功能,通过定义属性、事件、变量,以及编写初始化、播放视频、处理节点点击事件等方法,我们成功实现了视频监控系统的前端部分,感兴趣的朋友一起看看吧
    2024-11-11
  • vue中修改浏览器图标和名字的几种方式

    vue中修改浏览器图标和名字的几种方式

    当针对不同客户需要提供不同的图标时,页面其他图标好替换,但是网页图标就不太一样了,下面这篇文章主要给大家介绍了关于vue中修改浏览器图标和名字的几种方式,需要的朋友可以参考下
    2022-10-10
  • 浅谈 Vue v-model指令的实现原理

    浅谈 Vue v-model指令的实现原理

    vue的v-model是一个十分强大的指令,它可以自动让原生表单组件的值自动和你选择的值绑定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Vue常用实例方法示例梳理分析

    Vue常用实例方法示例梳理分析

    在了解vue的常用的实例方法之前,我们应该先要了解其常用的实例属性,你能了解到的vue实例属性有哪些呢?小编在这里就列举了几个常用的vue实例的属性。大家可以一起参考学习一下
    2022-08-08
  • vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show

    vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show

    这篇文章主要介绍了vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show,本文通过实例图文相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue根据条件添加click事件的方式

    Vue根据条件添加click事件的方式

    今天小编就为大家分享一篇Vue根据条件添加click事件的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue获取form表单的值示例

    vue获取form表单的值示例

    今天小编就为大家分享一篇vue获取form表单的值示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Vue 3中的异步操作管理示例分析

    Vue 3中的异步操作管理示例分析

    在现代Web应用开发中,异步操作是常见的挑战,本文介绍了Vue3中管理多个异步操作的方法,帮助开发者提高编码效率和应用性能,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Vue项目部署到IIS后刷新报错404的问题及解决方法

    Vue项目部署到IIS后刷新报错404的问题及解决方法

    这篇文章主要介绍了Vue项目部署到IIS后,刷新报错404,这里需要用到URL重写工具 --URL Rewrite,需要的话需要自己下载安装,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • vue打包chunk-vendors.js文件过大导致页面加载缓慢的解决

    vue打包chunk-vendors.js文件过大导致页面加载缓慢的解决

    这篇文章主要介绍了vue打包chunk-vendors.js文件过大导致页面加载缓慢的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论