///
import * as React from "react";
export interface ImageUploadProps extends React.HTMLAttributes {}
export class ImageUpload extends React.Component {}
export interface DragUploadProps extends React.HTMLAttributes {
/**
* 样式前缀
*/
prefix?: string;
/**
* 可选参数,拖拽到达拖拽区域回调函数
*/
onDragOver?: () => void;
/**
* 可选参数,拖拽释放回调函数,参数为拖拽的文件
*/
onDrop?: () => void;
/**
* 自定义类名
*/
className?: string;
/**
* 自定义内联样式
*/
style?: React.CSSProperties;
}
export class DragUpload extends React.Component {}
interface HTMLAttributesWeak extends React.HTMLAttributes {
onChange?: any;
onError?: any;
}
export interface CropUploadProps extends HTMLAttributesWeak {
/**
* 样式前缀
*/
prefix?: string;
/**
* 必选参数,上传的地址。使用 fileserver,跨域解决方案参考 [fileserver 接入](#fileserver),[`非 fileserver` 使用说明](#not-fileserver)
*/
action?: string;
/**
* 可选参数,传递给服务器的文件参数
*/
name?: string;
/**
* 可选参数,设置裁剪图片生成的尺寸,如设置 `100`,会生成 `100*100` 的图片
*/
cropSize?: number | {};
/**
* 可选参数,设置裁剪框的最小尺寸
*/
minCropBoxSize?: number;
/**
* 自定义类名
*/
className?: string;
/**
* 自定义内联样式
*/
style?: React.CSSProperties;
/**
* 可选参数,设置上传的请求头部
*/
headers?: {};
/**
* 可选参数,数据格式化函数,配合自定义 `action` 使用,参数为服务器的响应数据,详见 [formatter](#formatter)
*/
formatter?: () => void;
/**
* 上传额外传参(如果使用 `fileserver` 上传,参数格式为 { scene: '场景名' })
*/
data?: {} | (() => void);
/**
* 自定义语言包,会与默认提供的语言包做合并操作,请严格按照默认语言包的格式,参考 [demo](http://next.alibaba-inc.com/demo/pc/upload#react-Upload-2)
*/
locale?: {};
/**
* 是否使用预览功能
*/
preview?: boolean;
/**
* 预览展示列表,用来配置预览元素。目前仅支持 `80`、`60`、`40` 三种,例如,配置 `[80, 40]`,会展示 `80*80` 以及 `40*40` 两种尺寸
*/
previewList?: Array;
/**
* 裁剪弹层自定义类名
*/
popupClassName?: string;
/**
* 裁剪比例,例如 `1 / 2` 表示 `宽 / 高`。**注意:1、设置了裁剪比例,而且值不等于 `1` 时,不能使用预览功能;2、设置成 'auto' 可以支持任意裁剪比例**
*/
aspectRatio?: number;
/**
* 可选参数,[定义裁剪框的模式](https://github.com/fengyuanchen/cropperjs#viewmode)
*/
viewMode?: number;
/**
* 可选参数,[定义自动裁剪区域的尺寸(百分比)](https://github.com/fengyuanchen/cropperjs#autocroparea),介于 `0` 与 `1` 之间的值
*/
autoCropArea?: number;
/**
* 图片是否可以伸缩
*/
zoomable?: boolean;
/**
* 可选参数,选择文件后、唤起裁剪框前的钩子,参数为上传的文件。若返回 `false`、`Promise.reject()` 或者 `Promise.resolve(false)` 都会阻断后续流程,不会唤起裁剪框及后续动作
*/
beforeCrop?: () => void;
/**
* 完成裁剪并上传的回调函数,参数为裁剪后的文件的base64字符串数据
*/
onCrop?: () => void;
/**
* 可选参数,裁剪文件改变时触发
*/
onChange?: () => void;
/**
* 可选参数,点击裁剪之后、上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传
*/
beforeUpload?: () => void;
/**
* 上传成功回调函数,`res` 为后台响应,`dataUrl` 为裁剪后的文件的base64字符串数据(注意与 `Upload` 的参数区别)
*/
onSuccess?: () => void;
/**
* 可选参数,上传失败回调函数,参数为上传失败的文件信息
*/
onError?: () => void;
/**
* 图片类型
*/
accept?: string;
}
export class CropUpload extends React.Component {}
interface HTMLAttributesWeak extends React.HTMLAttributes {
onError?: any;
}
export interface CoreProps extends HTMLAttributesWeak {
/**
* 可选参数,自定义样式
*/
style?: React.CSSProperties;
/**
* 必选参数,上传的地址
*/
action: string;
/**
* 可选参数,传递给服务器的文件参数
*/
name: string;
/**
* 可选参数,是否禁用上传功能
*/
disabled?: boolean;
/**
* 可选参数,是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件
*/
multiple?: boolean;
/**
* 可选参数,是否支持拖拽上传,`ie10+` 支持。
*/
dragable?: boolean;
/**
* 可选参数,接受上传的文件类型,详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept), [兼容性见](http://caniuse.com/#feat=input-file-accept)
*/
accept?: string;
/**
* 上传额外传参
*/
data?: {} | (() => void);
/**
* 可选参数,设置上传的请求头部
*/
headers?: {};
/**
* 可选参数,是否允许请求携带 cookie
*/
withCredentials?: boolean;
/**
* 可选参数,上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传
*/
beforeUpload?: () => void;
/**
* 可选参数,开始上传文件的钩子,参数为上传的文件。如果开启了 `multiple`,参数为文件列表
*/
onStart?: () => void;
/**
* 可选参数,正在上传文件的钩子,参数为上传的事件以及文件
*/
onProgress?: () => void;
/**
* 可选参数,上传成功回调函数,参数为请求下响应信息以及文件
*/
onSuccess?: () => void;
/**
* 可选参数,上传失败回调函数,参数为上传失败的信息、响应信息以及文件
*/
onError?: () => void;
/**
* 可选参数,中断上传请求回调函数,参数为中断事件以及文件
*/
onAbort?: () => void;
}
export class Core extends React.Component {}
export interface ListProps extends React.HTMLAttributes {
/**
* 文件列表,数据格式请参考 文件对象
*/
listType?: "text" | "text-image" | "picture-card";
/**
* 文件列表
*/
fileList?: Array;
/**
* 渲染
*/
cell?: (value: {}, idx: number) => React.ReactElement;
}
export class List extends React.Component {}
interface HTMLAttributesWeak extends React.HTMLAttributes {
onChange?: any;
onError?: any;
}
export interface UploadProps extends HTMLAttributesWeak {
/**
* 样式前缀
*/
prefix: string;
/**
* 必选参数,上传的地址
*/
action?: string;
/**
* 上传文件列表,数据格式请参考
*/
fileList?: Array;
/**
* 默认上传文件列表,数据格式请参考
*/
defaultFileList?: Array;
/**
* 上传列表的样式
*/
listType?: "text" | "text-image" | "picture-card";
/**
* 上传额外传参(如果使用 `fileserver` 上传,参数格式为 { scene: '场景名' })
*/
data?: {} | (() => void);
/**
* 数据格式化函数,配合自定义 action 使用,参数为服务器的响应数据,详见 [formatter](#formater)
*/
formatter?: () => void;
/**
* 选择上传的文件的最大尺寸(单位:Byte)
*/
maxSize?: number;
/**
* 是否在上传前校验maxsize
*/
checkMaxSizeBeforeUpload?: boolean;
/**
* 语言种类,支持 `en-us`、`zh-cn`、`zh-tw`
*/
language?: string;
/**
* 自定义语言包,会与默认提供的语言包做合并操作,[详细参考](http://gitlab.alibaba-inc.com/next/upload/blob/master/src/locale/index.js)
*/
locale?: {};
/**
* 最大文件上传个数
*/
limit?: number;
/**
* 可选参数,是否支持拖拽上传,`ie10+` 支持。
*/
dragable?: boolean;
/**
* 可选参数,是否禁用上传功能
*/
disabled?: boolean;
/**
* 是否显示上传列表
*/
showUploadList?: boolean;
/**
* 上传文件改变时的状态
*/
onChange?: (info: {}) => void;
/**
* 可选参数,上传成功回调函数,参数为请求下响应信息以及文件
*/
onSuccess?: () => void;
/**
* 移除文件回调函数,详见 [onRemove](#onRemove)
*/
onRemove?: () => void;
/**
* 可选参数,上传失败回调函数,参数为上传失败的信息、响应信息以及文件
*/
onError?: () => void;
/**
* 自定义class
*/
className?: string;
/**
* 自定义内联样式
*/
style?: React.CSSProperties;
/**
* 子元素
*/
children?: React.ReactNode;
/**
* 可选参数,接受上传的文件类型,详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept), [兼容性见](http://caniuse.com/#feat=input-file-accept)
*/
accept?: string;
/**
* 可选参数,设置上传的请求头部
*/
headers?: {};
/**
* 传递给服务器的文件参数
*/
name?: string;
/**
* 可选参数,是否允许请求携带 cookie
*/
withCredentials?: boolean;
/**
* 可选参数,上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传
*/
beforeUpload?: () => void;
}
export default class Upload extends React.Component {
static ImageUpload: typeof ImageUpload;
static DragUpload: typeof DragUpload;
static CropUpload: typeof CropUpload;
static Core: typeof Core;
static List: typeof List;
}