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

* Upload: fix beforeUpload hook bug

* Upload: add ElUploadInternalRawFile interface
pull/11320/head
陈润山 2018-05-23 11:23:00 +08:00 committed by 杨奕
parent bc75c14dac
commit 2a1a6360ca
2 changed files with 16 additions and 4 deletions

View File

@ -94,8 +94,16 @@ export default {
const fileType = Object.prototype.toString.call(processedFile);
if (fileType === '[object File]' || fileType === '[object Blob]') {
processedFile.name = rawFile.name;
processedFile.uid = rawFile.uid;
if (fileType === '[object Blob]') {
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);
} else {
this.post(rawFile);

8
types/upload.d.ts vendored
View File

@ -9,13 +9,17 @@ export interface FileListItem {
status?: FileUploadStatus
}
export interface ElUploadInternalRawFile extends File {
uid: number
}
export interface ElUploadInternalFileDetail {
status: FileUploadStatus,
name: string,
size: number,
percentage: number,
uid: number,
raw: File,
raw: ElUploadInternalRawFile,
url?: string
}
@ -83,7 +87,7 @@ export declare class ElUpload extends ElementUIComponent {
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 */
beforeUpload: (file: ElUploadInternalFileDetail) => boolean | Promise<File | boolean>
beforeUpload: (file: ElUploadInternalRawFile) => boolean | Promise<File | Blob | boolean>
/** Whether thumbnail is displayed */
thumbnailMode: boolean