Skip to content

UploadButton

ProFormUploadButton 进行封装,在其基础上优化了以下功能:

  • 优化 upload 组件的传参,支持直接传入 path 或者 path[],如 'https://xxxx.jpg' 或 ['https://xxxx.jpg']
  • 兼容文件裁剪组件 antd-img-crop
  • 支持指定文件上传的 category
  • 支持限制文件大小
  • 支持单文件/多文件上传

新增以下参数:

  • maxSize (number, 可选): 文件尺寸,单位为兆(M)
  • categoryId (string, 可选): 知晓云文件的 categoryId
  • multiple (boolean, 可选): 是否启用多文件上传,默认只支持上传单文件
  • shouldCropImage ((file: object, fileList: object[]) => boolean, 可选): 根据该函数返回判断是否执行图片裁剪。需接入 antd-img-crop 组件,可见下方示例

其余参数均与 ProFormUploadButton 一致

TIP

如果接入了 antd-img-crop,顶层 props 的 beforeUpload 会被 antd-img-crop 代理,对上传动作进行拦截,禁止在此覆盖 beforeUpload

有需要传入 beforeUpload 的场景,需在 fieldProps 内定义 beforeUpload

example

作为 FormItem 使用

jsx
function Component() {
  return (
    <ProForm gutter={20}>
      <UploadButton
        colProps={{span: 12}}
        fieldProps={{listType: 'picture-card', accept: 'image/*'}}
        label="背景图片"
        labelCol={{span: 24}}
        name="background_image"
      />
    </ProForm>
  )
}

图片上传前进行裁剪

jsx
import ImageCrop from 'antd-img-crop'

function Page() {
  return (
    <ImageCrop showGrid modalTitle="裁剪图片">
      <UploadButton
        colProps={{span: 12}}
        fieldProps={{listType: 'picture-card', accept: 'image/*'}}
        label="背景图片"
        labelCol={{span: 24}}
        name="background_image"
      />
    </ImageCrop>
  )
}