feat(maxsize): 最大文件体积
This commit is contained in:
@ -2,13 +2,19 @@
|
|||||||
* @Author: zhaojinfeng 121016171@qq.com
|
* @Author: zhaojinfeng 121016171@qq.com
|
||||||
* @Date: 2023-08-16 17:33:41
|
* @Date: 2023-08-16 17:33:41
|
||||||
* @LastEditors: zhaojinfeng 121016171@qq.com
|
* @LastEditors: zhaojinfeng 121016171@qq.com
|
||||||
* @LastEditTime: 2023-08-16 18:58:09
|
* @LastEditTime: 2023-08-18 17:02:06
|
||||||
* @FilePath: \vue3\packages\upload-list\index.vue
|
* @FilePath: \vue3\packages\upload-list\index.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<el-upload v-model:file-list="userFiles" :accept="accept" :disabled="disabled" :http-request="httpRequest">
|
<el-upload
|
||||||
|
v-model:file-list="userFiles"
|
||||||
|
:accept="accept"
|
||||||
|
:disabled="disabled"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
:http-request="httpRequest"
|
||||||
|
>
|
||||||
<el-button type="primary" plain>
|
<el-button type="primary" plain>
|
||||||
点击上传
|
点击上传
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -16,7 +22,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup name="ThUploadList">
|
<script lang="ts" setup name="ThUploadList">
|
||||||
import type { UploadRequestOptions, UploadUserFile } from 'element-plus'
|
import type { UploadRawFile, UploadRequestOptions, UploadUserFile } from 'element-plus'
|
||||||
|
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
defineProps<{
|
defineProps<{
|
||||||
@ -30,8 +36,11 @@ const props = withDefaults(
|
|||||||
filePath?: string
|
filePath?: string
|
||||||
/** 禁用组件 */
|
/** 禁用组件 */
|
||||||
disabled?: boolean
|
disabled?: boolean
|
||||||
|
/** 最大上传大小(Mb) */
|
||||||
|
maxsize?: number
|
||||||
}>(), {
|
}>(), {
|
||||||
fileList: () => [],
|
fileList: () => [],
|
||||||
|
maxsize: 100,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,6 +50,14 @@ const emit = defineEmits<{
|
|||||||
|
|
||||||
const userFiles = ref<UploadUserFile[]>([])
|
const userFiles = ref<UploadUserFile[]>([])
|
||||||
|
|
||||||
|
function beforeUpload(rawFile: UploadRawFile) {
|
||||||
|
if (rawFile.size > props.maxsize * 1024 * 1024) {
|
||||||
|
const err = `文件大小不能超过${props.maxsize}Mb`
|
||||||
|
ElMessage.error(err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
async function httpRequest({ file, onProgress, onSuccess, onError }: UploadRequestOptions) {
|
async function httpRequest({ file, onProgress, onSuccess, onError }: UploadRequestOptions) {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('file', file)
|
formData.append('file', file)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
:max-size="20"
|
:max-size="20"
|
||||||
:file-name="allName[`${row.id}`]"
|
:file-name="allName[`${row.id}`]"
|
||||||
:request="request"
|
:request="request"
|
||||||
|
:maxsize="maxsize"
|
||||||
@on-change="$event => onChange($event, row.id)"
|
@on-change="$event => onChange($event, row.id)"
|
||||||
@on-success="$event => onSuccess($event, row, $index)"
|
@on-success="$event => onSuccess($event, row, $index)"
|
||||||
@on-error="onError(row.id)"
|
@on-error="onError(row.id)"
|
||||||
@ -100,6 +101,8 @@ const props = withDefaults(defineProps<{
|
|||||||
hideActions?: boolean
|
hideActions?: boolean
|
||||||
/** 文件上传的请求函数 */
|
/** 文件上传的请求函数 */
|
||||||
request?: (formData: FormData) => Promise<FileVO>
|
request?: (formData: FormData) => Promise<FileVO>
|
||||||
|
/** 最大上传大小(Mb) */
|
||||||
|
maxsize?: number
|
||||||
}>(), {
|
}>(), {
|
||||||
accept: '.jpeg,.jpg,.png,.bmp',
|
accept: '.jpeg,.jpg,.png,.bmp',
|
||||||
addText: '新增一行',
|
addText: '新增一行',
|
||||||
|
Reference in New Issue
Block a user