上传 Uploader
用于将本地图片上传到服务器,可以展示上传进度、结果预览。
使用
API安装使用
import { TiUploader } from '@titian-design/mobile-react'
用法示例
基础用法
选择完文件后,立即执行上传操作。
自定义参数
自定义header
自定义上传
仅使用组件样式
网格布局
控制每行显示的数量
手动上传
通过设置 `immediately` 为 `false`,并调用 `submit` 方法,可以手动控制上传时机。
TiUploader API
属性 Properties
名称 | 类型 | 是否必填 | 默认值 | 说明 | 备注 |
---|---|---|---|---|---|
value | unknown | 否 | - | 使用 value,组件为受控模式 | - |
defaultValue | UploadFileParams[] | 否 | [] | 使用 defaultValue ,组件为非受控模式 | |
disabled | boolean | 否 | false | 禁用交互能力 | |
immediately | boolean | 否 | true | 是否立刻上传 | - |
immediatelyChoose | boolean | 否 | true | 点击后立即选择 | - |
size | small | large | 否 | small | 组件尺寸 | - |
cols | number | 否 | - | 多列布局,可代替size | - |
chooseText | string | 否 | 选择器文案 | - | |
chooseIcon | string | 否 | plus | 选择器 icon | - |
sourceType | array | 否 | ['album', 'camera'] | 选择图片的来源 | - |
camera | back | front | 否 | back | 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头 | - |
count | number | 否 | 9 | 选择文件/图片/视频的数量 | - |
url | string | 否 | - | 上传地址 | - |
preview | Function | 否 | 自定义预览组件。默认使用内置的预览工具 | - | |
choose | Function | 否 | 选择函数 | - | |
beforeChoose | Function | 否 | 选择前的处理函数 | - | |
afterChoose | Function | 否 | 选择后的处理函数 | - | |
beforeUpload | Function | 否 | - 上传前置方法 可用用于处理上传参数 | - | |
upload | Function | 否 | 自定义上传方法,不传则使用内置的上传方法 | - | |
complete | Function | 否 | 上传完成/删除完成后调用 | - | |
afterUpload | Function | 否 | 上传后置方法,后置处理返回结果 | - | |
uploadExercise | '' | loading | progress | 否 | loading | 上传中展示风格 | - |
imageParams | Record<string, any> | 否 | {} | 上传图片参数;当不传自定义 beforeUpload 方法时,可以传该参数作为内部 beforeUpload 的参数 | - |
videoParams | Record<string, any> | 否 | {} | 上传视频参数;当不传自定义 beforeUpload 方法时,可以传该参数作为内部 beforeUpload 的参数 | - |
fileParams | Record<string, any> | 否 | {} | 上传文件参数;当不传自定义 beforeUpload 方法时,可以传该参数作为内部 beforeUpload 的参数 | - |
imageResultFormat | (string | number)[] | 否 | [] | 图片参数;当不传自定义 afterUpload 方法时,可以传该参数作为内部 afterUpload 的参数 | - |
videoResultFormat | (string | number)[] | 否 | [] | 视频参数;当不传自定义 afterUpload 方法时,可以传该参数作为内部 afterUpload 的参数 | - |
fileResultFormat | (string | number)[] | 否 | [] | 文件参数;当不传自定义 afterUpload 方法时,可以传该参数作为内部 afterUpload 的参数 | - |
accept | string | 否 | / | http 的 accept 参数,指定文件类型 | - |
extStyle | string | 否 | '' | 容器样式 | - |
事件 Events
名称 | 参数列表 | 描述 | 备注 |
---|---|---|---|
onChange | (e: CustomEvent<{ file: UploadFile; fileList: UploadFile[]; uploading: boolean }>) => void | 上传处理 | |
onError | (e: CustomEvent<{ status: string; message: string; }>) => void | 错误事件 | |
onChoose | (e: CustomEvent<any>) => void | 选择事件 |
外部样式类 External Classes
名称 | 说明 | 备注 |
---|---|---|
extClass | 根节点可扩展的类名 | - |
extThumBoxClass | 缩略图容器类名 | -- |
extThumTipClass | 缩略图容器提示类名 | -- |
extThumClass | 缩略图类名 | -- |
extThumImageClass | 缩略图-图片类名 | -- |
extThumVideoClass | 缩略图-视频类名 | -- |
extThumOtherClass | 缩略图-其他类名 | -- |
extActionClass | 选择器-类名 | -- |
CSS 变量 CSS Variable
变量 | 默认值 | 说明 | 备注 |
---|---|---|---|
--uploader-action-bg-color | theme.color.gray.background.40 | 上传区背景色 | - |
--uploader-action-text-color | theme.color.gray.texticon.250 | 上传区文字颜色 | - |
--uploader-icon-color | theme.color.gray.texticon.400 | 上传区 icon 颜色 | - |
--uploader-disabled-color | theme.color.gray.border.100 | 上传区禁用 icon、(失败)文字颜色 | - |
--uploader-fail-color | theme.color.gray.texticon.invert | 上传文件失败文字颜色 | - |
--uploader-fail-bg-color | theme.color.gray.mask.800 | 上传文件失败背景颜色 | - |
--uploader-loading-color | theme.color.gray.texticon.invert | 上传文件 loading 颜色 | - |
--uploader-loading-bg-color | theme.color.gray.texticon.900 | 上传文件 loading 背景颜色 | - |
--uploader-margin | 24rpx | 容器外边距 | - |
--uploader-size | 120rpx | 容器大小(size="small") | - |
216rpx | 容器大小(size="large") | - | |
--uploader-radius | theme.borderRadius.r2 | 容器圆角(size="small") | - |
theme.borderRadius.r3 | 容器圆角(size="large") | - | |
--uploader-action-font-size | theme.fontSize.t2 | 上传按钮,文字字号(size="small") | - |
theme.fontSize.t4 | 上传按钮,文字字号(size="large") | - | |
--uploader-action-line-height | theme.lineHeight.single.t2 | 上传按钮,文字行高(size="small") | - |
theme.lineHeight.single.t4 | 上传按钮,文字行高(size="large") | - | |
--uploader-action-font-weight | theme.fontWeight.regular | 上传按钮,文字字重 | - |
--uploader-icon-font-size | theme.fontSize.t8 | 上传按钮,图标尺寸(size="small") | - |
theme.fontSize.t12 | 上传按钮,图标尺寸(size="large") | - |
数据结构 Data Structure
文件 UploadFile
interface UploadFile extends UploadFileExternal {
key: string;
}
interface UploadFileExternal {
path: string;
poster?: string;
size: number;
name: string;
duration?: number;
fileType: UploadType;
status: UploadStatus;
}