fix(components): [upload] drag file add isDirectory attribute (#20012)

* fix(components): [upload] drag file add isDirectory attribute

* fix: compatibility test

* fix: extend UploadRawFile
This commit is contained in:
btea
2025-03-17 20:55:04 +08:00
committed by GitHub
parent 4e2a64d721
commit d4123cd558
3 changed files with 13 additions and 1 deletions

View File

@@ -175,6 +175,7 @@ interface UploadProgressEvent extends ProgressEvent {
interface UploadRawFile extends File {
uid: number
isDirectory?: boolean
}
interface UploadRequestOptions {

View File

@@ -17,6 +17,8 @@ import { throwError } from '@element-plus/utils/error'
import { uploadContextKey } from './constants'
import { uploadDraggerEmits, uploadDraggerProps } from './upload-dragger'
import type { UploadRawFile } from './upload'
const COMPONENT_NAME = 'ElUploadDrag'
defineOptions({
@@ -44,7 +46,15 @@ const onDrop = (e: DragEvent) => {
e.stopPropagation()
const files = Array.from(e.dataTransfer!.files)
const files = Array.from(e.dataTransfer!.files) as UploadRawFile[]
const items = e.dataTransfer!.items || []
files.forEach((file, index) => {
const item = items[index]
const entry = item?.webkitGetAsEntry?.()
if (entry) {
file.isDirectory = entry.isDirectory
}
})
emit('file', files)
}

View File

@@ -44,6 +44,7 @@ export type UploadUserFile = Omit<UploadFile, 'status' | 'uid'> &
export type UploadFiles = UploadFile[]
export interface UploadRawFile extends File {
uid: number
isDirectory?: boolean
}
export type UploadRequestHandler = (
options: UploadRequestOptions