<el-upload
drag
action="#"
:before-upload="beforeAvatarUpload"
:http-request="uploadImage"
:on-success="handleAvatarSuccess"
:show-file-list="false"
:limit="1"
:accept="accept">
<div style="margin: 0 auto;margin-top: 60px;">
<div class="el-upload__text">将文件拖到此处,或点击打开选择文件导入</div> <div class="upload__type">支持扩展名:.xls .xlsx</div>
</div>
</el-upload>
在data中声明一个变量
需要上传什么格式就在这里写什么格式
比如说是excel:accept:'.xls,.xlsx'
如果需要上传图片格式
图片:accept:'.jpg,.jpeg,.png'
也可以直接写在el-upload中accept的属性中,就可以省略声明变量这个步骤
:http-request
:http-request这个属性中是自定义上传方法,也就是如果需要调用后端接口,方法就写在这个里面
代码如下:
uploadImage(file) {
var formData = new FormData()
// formData.append() 这个方法中可以自定义上传一些后端需要的参数
formData.append('file', file.file)
var requestConfig = {
headers: {
'Content-Type': 'multipart/form-data'
},
}
// this.loading = true
this.$message.error('图片正在上传中,请稍后');
//这里就是自定义的接口
this.$axios.post(this.uploadURL, formData, requestConfig)
.then((res) => {
this.temp.imgName = res.data.fileName
this.$message.success(res.data.msg)
this.loading = false
}).catch((res)=>{
this.$message.error(res.msg)
})
},
:on-success
:on-success 这个方法中 就是上传成功以后做的事情
代码如下:
handleAvatarSuccess(res, file) {
this.$message.warning('上传成功')
},
:before-upload
:before-upload 这个方法 就是在咱们上传之前做的一些事情了,校验文件格式或大小等等
代码如下:
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 50;
let fileName = file.name || ''
// .xsl 转小写
let type = fileName.slice(fileName.lastIndexOf('.')).toLocaleLowerCase()
if (!this.accept.includes(type)) {
this.$message.error('上传文件只能是excel格式!');
return false
}
if (!isLt2M) {
this.$message.error('上传文件大小不能超过 50MB!');
return false
}
return true;
},
到这里,上传就做完啦!