Commit 2a1a6360 authored by 陈润山's avatar 陈润山 Committed by 杨奕

Upload: fix Error when `beforeUpload` hook return promise of file object (#11297)

* Upload: fix beforeUpload hook bug

* Upload: add ElUploadInternalRawFile interface
parent bc75c14d
...@@ -94,8 +94,16 @@ export default { ...@@ -94,8 +94,16 @@ export default {
const fileType = Object.prototype.toString.call(processedFile); const fileType = Object.prototype.toString.call(processedFile);
if (fileType === '[object File]' || fileType === '[object Blob]') { if (fileType === '[object File]' || fileType === '[object Blob]') {
processedFile.name = rawFile.name; if (fileType === '[object Blob]') {
processedFile.uid = rawFile.uid; processedFile = new File([processedFile], rawFile.name, {
type: rawFile.type
});
}
for (const p in rawFile) {
if (rawFile.hasOwnProperty(p)) {
processedFile[p] = rawFile[p];
}
}
this.post(processedFile); this.post(processedFile);
} else { } else {
this.post(rawFile); this.post(rawFile);
......
...@@ -9,13 +9,17 @@ export interface FileListItem { ...@@ -9,13 +9,17 @@ export interface FileListItem {
status?: FileUploadStatus status?: FileUploadStatus
} }
export interface ElUploadInternalRawFile extends File {
uid: number
}
export interface ElUploadInternalFileDetail { export interface ElUploadInternalFileDetail {
status: FileUploadStatus, status: FileUploadStatus,
name: string, name: string,
size: number, size: number,
percentage: number, percentage: number,
uid: number, uid: number,
raw: File, raw: ElUploadInternalRawFile,
url?: string url?: string
} }
...@@ -83,7 +87,7 @@ export declare class ElUpload extends ElementUIComponent { ...@@ -83,7 +87,7 @@ export declare class ElUpload extends ElementUIComponent {
onChange: (file: ElUploadInternalFileDetail, fileList: ElUploadInternalFileDetail[]) => void onChange: (file: ElUploadInternalFileDetail, fileList: ElUploadInternalFileDetail[]) => void
/** Hook function before uploading with the file to be uploaded as its parameter. If false or a Promise is returned, uploading will be aborted */ /** Hook function before uploading with the file to be uploaded as its parameter. If false or a Promise is returned, uploading will be aborted */
beforeUpload: (file: ElUploadInternalFileDetail) => boolean | Promise<File | boolean> beforeUpload: (file: ElUploadInternalRawFile) => boolean | Promise<File | Blob | boolean>
/** Whether thumbnail is displayed */ /** Whether thumbnail is displayed */
thumbnailMode: boolean thumbnailMode: boolean
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment