diff --git a/types/zui/index.d.ts b/types/zui/index.d.ts
index 2bd66ea5e1..21c4dfe1a8 100644
--- a/types/zui/index.d.ts
+++ b/types/zui/index.d.ts
@@ -20,6 +20,7 @@
///
///
///
+///
/*~ If this module is a UMD module that exposes a global variable 'myLib' when
*~ loaded outside a module loader environment, declare that global here.
diff --git a/types/zui/uploader.d.ts b/types/zui/uploader.d.ts
new file mode 100644
index 0000000000..18ebfb1127
--- /dev/null
+++ b/types/zui/uploader.d.ts
@@ -0,0 +1,148 @@
+interface UploaderOption {
+ drop_element?: string,
+ browse_button?: string,
+ url: string,
+ qiniu?: object,
+ filters?: {
+ mime_type: Array<{
+ title?: string,
+ extensions?: string
+ }>,
+ max_file_size?: string,
+ prevent_duplicates?: string
+ },
+ fileList?: string,
+ fileTemplate?: string,
+ fileFormater?($file: JQuery, file: FileObj, status: STATUS): void;
+ fileIconCreator?(fileType: string, file: FileObj, uploader: Uploader): void;
+ staticFiles?: Array<{
+ id?: string,
+ name?: string,
+ type?: string,
+ size?: string,
+ origSize?: string,
+ lastModifiedDate?: Date
+ }>;
+ rename?: boolean,
+ renameExtension?: boolean,
+ renameByClick?: boolean,
+ autoUpload?: boolean,
+ browseByClickList?: boolean,
+ dropPlaceholder?: boolean,
+ previewImageIcon?: boolean,
+ sendFileName?: boolean,
+ sendFileId?: boolean,
+ responseHandler?: boolean | Function,
+ limitFilesCount?: boolean | number,
+ deleteConfirm?: boolean | string,
+ removeUploaded?: boolean,
+ statusCreator?(total: UploadProgress, state: STATUS, uploader: Uploader): void;
+ previewImageSize?: { width: number, height: number },
+ uploadedMessage?: boolean,
+ deleteActionOnDone?: boolean,
+ renameActionOnDone?: boolean,
+ headers?: object,
+ multipart?: boolean,
+ multipart_params?: object | Function,
+ max_retries?: number,
+ chunk_size?: string,
+ resize?: {
+ width?: number,
+ height?: number,
+ crop?: boolean,
+ quuality?: number,
+ preserve_headers?: boolean
+ },
+ multi_selection?: boolean,
+ unique_names?: boolean,
+ runtimes?: string,
+ file_data_name?: string,
+ flash_swf_url?: string,
+ silverlight_xap_url?: string,
+ lang?: string,
+
+ onInit?(): void,
+ onFilesAdded?(fiels: Array): void;
+ onUploadProgress?(file: FileObj): void;
+ onFileUploaded?(file: FileObj, responseObject: ResponseObject): void
+ onUploadComplete?(files: Array): void,
+ onFilesRemoved?(files: Array): void,
+ onChunkUploaded?(file: FileObj, responseObject: ResponseObject): void,
+ onUploadFile?(file: FileObj): void,
+ onBeforeUpload?(file: FileObj): void,
+ onStateChanged?(status: STATUS): void,
+ onQueueChanged?(): void,
+ onError?(error: { error: ERRORS, message: string, file: FileObj }): void
+}
+interface ResponseObject {
+ response?: string,
+ responseHeaders?: object,
+ status?: number,
+ offset?: number,
+ total?: number
+}
+declare enum STATUS {
+ STOPPED = 1, STARTED = 2, QUEUED = 1, UPLOADING = 2, FAILED = 3, DONE = 4
+}
+interface FileObj {
+ id?: string,
+ name?: string,
+ type?: string,
+ ext?: string,
+ isImage?: boolean,
+ previewImage?: string,
+ size?: number,
+ origSize?: number,
+ loaded?: number,
+ percent?: number,
+ status?: STATUS,
+ lastModifiedDate?: Date,
+ getNative(): File,
+ destroy(): void
+}
+interface UploadProgress {
+ size?: number,
+ loaded?: number,
+ uploaded?: number,
+ failed?: number,
+ queued?: number,
+ percent?: number,
+ bytesPerSec?: number
+}
+declare enum ERRORS {
+ GENERIC_ERROR = -100,
+ HTTP_ERROR = -200,
+ IO_ERROR = -300,
+ SECURITY_ERROR = -400,
+ INIT_ERROR = -500,
+ FILE_SIZE_ERROR = -600,
+ FILE_EXTENSION_ERROR = -601,
+ FILE_DUPLICATE_ERROR = -602,
+ IMAGE_FORMAT_ERROR = -700,
+ IMAGE_MEMORY_ERROR = -701,
+ IMAGE_DIMENSIONS_ERROR = -702
+}
+interface Uploader {
+ showMessage(message: string, type: string, time?: number): void;
+ hideMessage(): void;
+ start(): void,
+ stop(): void,
+ getState(): STATUS,
+ isStarted(): boolean,
+ isStopped(): boolean,
+ getFiles(): Array;
+ getTotal(): UploadProgress,
+ disableBrowse(disable: boolean): void,
+ getFile(id: string): FileObj,
+ showFile(file: FileObj | Array): void;
+ removeFile(file: FileObj): void;
+ destroy(): void,
+ showStatus(): void
+}
+interface UplaoderStatic {
+
+}
+interface JQuery {
+ uploader(option: UploaderOption): JQuery;
+
+}
\ No newline at end of file
diff --git a/types/zui/zui-tests.ts b/types/zui/zui-tests.ts
index 12ce598c51..ea90bd89af 100644
--- a/types/zui/zui-tests.ts
+++ b/types/zui/zui-tests.ts
@@ -326,3 +326,14 @@ $('table.datatable').datatable('load', {
]
});
+
+/**
+ * uplaoder
+ */
+$('#myUploader').uploader({
+ url: '...',
+ // ...,
+ onUploadFile: function(file:FileObj) {
+ console.log('上传成功', file);
+ }
+});
\ No newline at end of file