vue使用Element el-upload 组件踩坑记
作者:奥特曼 发布时间:2023-07-02 16:32:17
标签:vue,Element,el-upload,组件
一、基本使用
最近研究了一下 el-upload组件 踩了一些小坑 写起来大家学习一下
很经常的一件事情 经常会去直接拷贝 element的的组件去使用 但是用到上传组件时 就会遇到坑了
如果你直接去使用upload 你肯定会遇见这个错误
而且 上传的图片 可能会突然消失 这时候如果你没有接口 你是完全不知道为什么移除的 所以 无接口时 只能去猜测是不是因为跨域报错 导致图片消失
最终去拿公司的地址调完接口,答案是对的 action="https://jsonplaceholder.typicode.com/posts/" 这是element中的action参数 用html 时 他会去调用ajax 使同源策略不同导致报错。
一般呢公司都会提供一个 转图片为url格式的地址链接 你只需要去调用它 保存下来就好了, 但是可能会遇到需要token 权限 ,这时候很少去做的事情来了,一般没有去直接通过组件带token,所以要通过 el-upload组件去携带token
<el-upload
action="https://xxxx地址"
:headers="importHeaders"
>
</el-upload>
import {getToken} from '@/utils/token'
data() {
return {
importHeaders: {token: getToken()},
};
},
二、图片数量控制
<el-upload
action="https://security.brofirst.cn/api/common/upload"
:headers="importHeaders"
:limit="limit"
:on-exceed="masterFileMax"
>
<i class="el-icon-plus"></i>
</el-upload>
// 最多上传几张图片
masterFileMax(files, fileList) {
console.log(files, fileList);
this.$message.warning(`请最多上传 ${this.limit} 个文件。`);
},
三、图片格式限制/可以选中多张图片
<el-upload
accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg"
multiple
>
<i class="el-icon-plus"></i>
</el-upload>
例子
<el-upload
action="https://xxxx"
:headers="importHeaders"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleAvatarSuccess"
:limit="limit"
:on-exceed="masterFileMax"
accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg"
multiple
>
<i class="el-icon-plus"></i>
</el-upload>
<script>
import {getToken} from '@/utils/token'
export default {
name:'feedback',
data() {
return {
importHeaders: {token: getToken()},
images:[],
limit:9
};
},
methods: {
//删除图片
handleRemove(file, fileList) {
const idx= this.images.findIndex(it=>it===file.response.data.fullurl)
this.images.splice(idx,1)
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// 上传成功后的数据
handleAvatarSuccess(response, file, fileList){
console.log(response, file, fileList);
if(response.code===1){
this.images.push(response.data.fullurl)
}
},
// 最多上传几张图片
masterFileMax(files, fileList) {
console.log(files, fileList);
this.$message.warning(`请最多上传 ${this.limit} 个文件。`);
}
}
};
</script>
补充:在vue项目中使用element-ui的Upload上传组件
<el-upload
v-else
class='ensure ensureButt'
:action="importFileUrl"
:data="upLoadData"
name="importfile"
:onError="uploadError"
:onSuccess="uploadSuccess"
:beforeUpload="beforeAvatarUpload"
>
<el-button size="small" type="primary">确定</el-button>
其中importFileUrl是后台接口,upLoadData是上传文件时要上传的额外参数,uploadError是上传文件失败时的回掉函数,uploadSuccess是文件上传成功时的回掉函数,beforeAvatarUpload是在上传文件之前调用的函数,我们可以在这里进行文件类型的判断。
data () {
importFileUrl: 'http:dtc.com/cpy/add',
upLoadData: {
cpyId: '123456',
occurTime: '2017-08'
}
},
methods: {
// 上传成功后的回调
uploadSuccess (response, file, fileList) {
console.log('上传文件', response)
},
// 上传错误
uploadError (response, file, fileList) {
console.log('上传失败,请重试!')
},
// 上传前对文件的大小的判断
beforeAvatarUpload (file) {
const extension = file.name.split('.')[1] === 'xls'
const extension2 = file.name.split('.')[1] === 'xlsx'
const extension3 = file.name.split('.')[1] === 'doc'
const extension4 = file.name.split('.')[1] === 'docx'
const isLt2M = file.size / 1024 / 1024 < 10
if (!extension && !extension2 && !extension3 && !extension4) {
console.log('上传模板只能是 xls、xlsx、doc、docx 格式!')
}
if (!isLt2M) {
console.log('上传模板大小不能超过 10MB!')
}
return extension || extension2 || extension3 || extension4 && isLt2M
}
}
来源:https://blog.csdn.net/m0_46846526/article/details/120555641


猜你喜欢
- 一、介绍模块最小开发框架:基于python 的Pygame最小开发框架1、Pygame和sys模块import pygame #制
- MySQL 内连接、左连接、右连接、外连接、多表查询构建环境:create table t_emp(id int primary key,
- 问题说明(环境:windows7,MySql8.0)今天安装好MySql后启动MySql服务-->启动服务都失败的就不要往下看了,自行
- 对于大多数研发人员来说,都期望能找到一个良好的测试/调试方法,来提高工作效率和快速解决问题。所谓调试,偏重于对某个bug的查找、定位、修复;
- 本文实例讲述了Go语言中使用MySql的方法。分享给大家供大家参考。具体如下:此代码需要先安装mysql的go语言驱动。首先安装mysql的
- 学习计划很容易就被打断,坚持也不容易。最近公司里开会,要调整业务方向,建议学习NodeJS。NodeJS之前我就会一点,但是没有深入研究。N
- 如下所示:import collectionsclass Mydict(collections.UserDict):def __missin
- 记录一下PHP连接MySQL的两种方式。先mock一下数据,可以执行一下sql。/*创建数据库*/CREATE DATABASE IF NO
- 1、使用函数shutil.make_archive()创建归档文件,并返回归档后的名称。import shutilpath_1 = r
- var obj=document.getElementById("txtUserID") var range=obj.c
- PyQt5表格控件QTableView简介在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTab
- 1.apache配置文件中打开vhost的配置LoadModule vhost_alias_module modules/mod_vhost
- 本篇文章介绍如何使用xlrd来读取Excel表格中的内容,xlrd是第三方库,所以在使用前我们需要安装xlrd。另外我们一般会使用xlwt来
- server:#coding=utf-8from BaseHTTPServer import BaseHTTPRequestHandleri
- 这几天一直困惑我的问题,我觉得pycharm应该也是有的啊,偶然间找到了这个。把那个框里的选中,就可以了。ps:我的是 PyCharm 20
- 1.主要功能如下:1.classification分类2.Regression回归3.Clustering聚类4.Dimensionalit
- 接下来我们会进入 字符串常用方法的应用阶段,重点学习字符串的内置函数。正式学习之前,我们要先了解一个词 对象 (划重点,不是男女朋友!),只
- 一、PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语
- 话不多说上代码!源代码from tkinter import *import pyttsx3class Application(Frame)
- 本文实例为大家分享了OpenCV3.3+Python3.6实现图片高斯模糊的具体代码,供大家参考,具体内容如下高斯模糊高斯模糊(英语:Gau