From b2cd6f4dc645632724fa4638ac0c1c7738f86e61 Mon Sep 17 00:00:00 2001 From: Van Date: Sun, 17 Feb 2019 18:49:42 +0800 Subject: [PATCH] :recycle: #13 upload --- src/ts/toolbar/Record.ts | 2 +- src/ts/toolbar/Upload.ts | 2 +- src/ts/types/index.d.ts | 6 +++++- src/ts/upload/index.ts | 10 +++++++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/ts/toolbar/Record.ts b/src/ts/toolbar/Record.ts index 2e7e3f95d..8fc41216a 100644 --- a/src/ts/toolbar/Record.ts +++ b/src/ts/toolbar/Record.ts @@ -43,7 +43,7 @@ export class Record extends MenuItemClass { if (mediaRecorder.isRecording) { mediaRecorder.stopRecording() vditor.upload.element.className = 'vditor-upload' - const file = new File([mediaRecorder.buildWavFileBlob()], + const file:File = new File([mediaRecorder.buildWavFileBlob()], `record${(new Date()).getTime()}.wav`, {type: 'video/webm'}) uploadFiles(vditor, [file]) } else { diff --git a/src/ts/toolbar/Upload.ts b/src/ts/toolbar/Upload.ts index 1e63d65d9..545c5d6a7 100644 --- a/src/ts/toolbar/Upload.ts +++ b/src/ts/toolbar/Upload.ts @@ -11,7 +11,7 @@ export class Upload extends MenuItemClass { } _bindEvent(vditor: Vditor) { - this.element.querySelector('input').addEventListener('change', (event: any) => { + this.element.querySelector('input').addEventListener('change', (event: HTMLInputEvent) => { if (event.target.files.length === 0) { return } diff --git a/src/ts/types/index.d.ts b/src/ts/types/index.d.ts index 786c4aae4..4d69df74b 100644 --- a/src/ts/types/index.d.ts +++ b/src/ts/types/index.d.ts @@ -12,7 +12,11 @@ declare module 'turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js' declare var webkitAudioContext: { prototype: AudioContext; new(contextOptions?: AudioContextOptions): AudioContext; -}; +} + +interface HTMLInputEvent extends Event { + target: HTMLInputElement & EventTarget; +} interface I18nLang { en_US: string; diff --git a/src/ts/upload/index.ts b/src/ts/upload/index.ts index 955b02514..493448311 100644 --- a/src/ts/upload/index.ts +++ b/src/ts/upload/index.ts @@ -18,10 +18,14 @@ class UploadClass { } } -const genUploadingLabel = (vditor: Vditor, files: any): string => { +const genUploadingLabel = (vditor: Vditor, files: DataTransferItemList | FileList | File[]): string => { let uploadingStr = '' for (let iMax = files.length, i = 0; i < iMax; i++) { - const file = files[i].getAsFile ? files[i].getAsFile() : files[i] + let file = files[i] + if (file instanceof DataTransferItem) { + file = file.getAsFile() + } + const tag = file.type.indexOf('image') === -1 ? '' : '!' if (!file.name) { return '' @@ -72,7 +76,7 @@ const genUploadedLabel = (editorElement: HTMLTextAreaElement, responseText: stri }) } -const uploadFiles = (vditor: Vditor, files: any, element?: HTMLInputElement) => { +const uploadFiles = (vditor: Vditor, files: FileList | DataTransferItemList | File[], element?: HTMLInputElement) => { const formData = new FormData() const uploadFiles = [] for (let i = 0; i < files.length; i++) {