# useUpload 用于处理文件上传和选择相关的逻辑。 ## 基础用法 ```ts import { useUpload } from '@/uni_modules/wot-design-uni' const { startUpload, abort, chooseFile, UPLOAD_STATUS } = useUpload() // 选择文件 const files = await chooseFile({ accept: 'image', multiple: true, maxCount: 9 }) // 开始上传 const file = { url: 'file://temp/image.png', status: UPLOAD_STATUS.PENDING, percent: 0 } startUpload(file, { action: 'https://upload-url', onSuccess(res) { console.log('上传成功', res) }, onError(err) { console.log('上传失败', err) }, onProgress(progress) { console.log('上传进度', progress) } }) // 中断上传 abort() ``` ## API ### 方法 | 方法名 | 说明 | 参数 | 返回值 | 最低版本 | |-------|------|------|--------|---------| | startUpload | 开始上传文件 | file: UploadFileItem, options: UseUploadOptions | UniApp.UploadTask \| void | - | | abort | 中断上传 | task?: UniApp.UploadTask | void | - | | chooseFile | 选择文件 | options: ChooseFileOption | Promise | - | ### UseUploadOptions | 参数 | 说明 | 类型 | 默认值 | 最低版本 | |-----|------|------|--------|---------| | action | 上传地址 | string | - | - | | header | 请求头 | Record | {} | - | | name | 文件对应的 key | string | 'file' | - | | formData | 其它表单数据 | Record | {} | - | | fileType | 文件类型 | 'image' \| 'video' \| 'audio' | 'image' | - | | statusCode | 成功状态码 | number | 200 | - | | uploadMethod | 自定义上传方法 | UploadMethod | - | - | | onSuccess | 上传成功回调 | Function | - | - | | onError | 上传失败回调 | Function | - | - | | onProgress | 上传进度回调 | Function | - | - | ### ChooseFileOption | 参数 | 说明 | 类型 | 默认值 | 最低版本 | |-----|------|------|--------|---------| | multiple | 是否支持多选文件 | boolean | false | - | | sizeType | 所选的图片的尺寸 | Array | ['original', 'compressed'] | - | | sourceType | 选择文件的来源 | Array | ['album', 'camera'] | - | | maxCount | 最大可选数量 | number | 9 | - | | accept | 接受的文件类型 | 'image' \| 'video' \| 'media' \| 'file' \| 'all' | 'image' | - | | compressed | 是否压缩视频 | boolean | true | - | | maxDuration | 视频最大时长(秒) | number | 60 | - | | camera | 摄像头朝向 | 'back' \| 'front' | 'back' | - | | extension | 根据文件拓展名过滤(H5支持全部类型过滤,微信小程序支持all和file时过滤,其余平台不支持) | string[] | - |