Skip to main content

FilePicker 文件选择器

使用场景#

从系统文件目录中选择部分文件进行上传。

请求库接入示例#

<FilePicker
request={(options: any) =>
axios({
method: 'post',
url: 'http://127.0.0.1:7001/api/upload',
transformResponse: [].concat(axios.defaults.transformResponse, (data: any) => {
return {
url: data.data,
message: data.message,
};
}),
...options,
}).then((ret) => {
return ret.data;
})
}
onChange={console.log}
/>

需要将后端返回的数据转换为

{
"url": "foo.bar",
"message": "message body"
}

上传文件示例#

FormData
- id: file_1
- name: test.png
- type: image/png
- file: (binary)

服务端接收示例#

以 Egg 框架为例

const stream = await ctx.getFileStream();
const filename = stream.filename || stream.name;
const ret = await ctx.service.file.uploadStream(stream, filename);

示例#

基本示例#

noInline

多媒体#

noInline

拖拽上传#

上传文件
可以拖拽文件到此处进行文件上传操作
    上传文件
    可以拖拽文件到此处进行文件上传操作
      noInline

      文件上传状态#

      noInline

      文件类型#

      inline

      文件多选#

        inline

        API#

        FilePicker#

        字段描述
        renderTrigger(props: FilePickTriggerProps) => ReactNode
        渲染触发器
        valueRexFile[]
        受控值
        defaultValueRexFile[]
        非受控默认值
        onChangeFormControlOnChangeHandler<RexFile[]>
        文件上传成功后的回调
        requestRequestType
        自定义请求方法
        multipleboolean
        是否可以选择多个文件
        acceptstring
        可以选择的文件类型,例如 `image/*`, `video/*`
        disabledboolean
        是否禁用
        classNamestring
        自定义样式名

        MediaPicker#

        字段描述
        renderTrigger(props: FilePickTriggerProps) => ReactNode
        渲染触发器
        valueRexFile[]
        受控值
        defaultValueRexFile[]
        非受控默认值
        onChangeFormControlOnChangeHandler<RexFile[]>
        文件上传成功后的回调
        requestRequestType
        自定义请求方法
        multipleboolean
        是否可以选择多个文件
        acceptstring
        可以选择的文件类型,例如 `image/*`, `video/*`
        disabledboolean
        是否禁用
        classNamestring
        自定义样式名
        Copyright © 2021 Alibaba Inc.
        Built with ❤️ by hema-FE.