vue3上传组件——完整版功能(含接口)
1、效果
1
2
3
4
2、代码
<script lang="ts" setup>
import titleHeader from '../header/titleHeader.vue'
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import img from '@/assets/yfdd-bs/right/zbyq/fb.png'
const fileList = ref<Array<{name: string}>>([])
/**
* 删除文件
*/
const handleDelFile = () => {
fileList.value = []
}
/**
* 上传之前触发
*/
const beforeUpload = (file: any) => {
// 判断文件类型
const index = file.name.lastIndexOf('.')
const type = file.name.substring(index + 1).toLocaleLowerCase()
const hasType = ['pdf'].some(res => {
return res === type
})
if (!hasType) {
ElMessage.warning('文件类型不正确')
return false
}
}
const handleExceed = () => {
ElMessage.info('只能上传一个哦')
return false
}
const handleSuccess = (response: any) => {
const { data } = response
console.log(data)
}
</script>
<template>
<div class="duty-container">
<titleHeader
:src="img"
:need-line="true"
:line-width="[170, 24]"
/>
<div class="content">
123
<!--参数:
action 必选参数,上传的接口地址;
limit 允许上传的最大数量;
file-list 上传的文件列表;
before-upload 上传前的方法;
on-remove 文件列表移除文件时的方法;
on-exceed 文件超出个数限制时的方法;
on-success 文件上传成功时的钩子(方法)
-->
<el-upload
class="upload-demo"
action="http://130.25.94.8:8487/common/file/upload"
:limit="1"
:file-list="fileList"
:before-upload="beforeUpload"
:on-remove="handleDelFile"
:on-exceed="handleExceed"
:on-success="handleSuccess"
>
<el-button
size="small"
type="primary"
>
点击上传,只能上传pdf格式
</el-button>
</el-upload>
</div>
</div>
</template>
<style scoped lang="scss">
.duty-container {
grid-area: a;
background: url(@/assets/yfdd-bs/right/zbyq/back2.png) no-repeat;
background-size: 100% 100%;
.content {
margin-top: -10px;
height: calc(100% - 100px);
padding: 0px 30px;
}
}
</style>