antd上传upload组件customRequest 图片转base64

工作有那么个需求,从官网 issue中获悉:

使用 Upload 的 customRequestFileReader 读取。

customRequest

从官网获悉其参数:

onProgress: (event: { percent: number }): void
onError: (event: Error, body?: Object): void
onSuccess: (body: Object): void
data: Object
filename: String
file: File
withCredentials: Boolean
action: String
headers: Object

具体代码:

import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Upload, message, Button, Icon } from "antd";

/**
	获取file,通过FileReader获取图片的 base64
*/ 
function customRequest(option) {
  const formData = new FormData();
  formData.append("files[]", option.file);
  const reader = new FileReader();
  reader.readAsDataURL(option.file);
  reader.onloadend = function(e) {
    console.log(e.target.result);// 打印图片的base64
    if (e && e.target && e.target.result) {
      option.onSuccess();
    }
  };
}

/***
	上传验证格式及大小
*/
function beforeUpload(file) {
  const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png";
  if (!isJpgOrPng) {
    message.error("只能上传JPG或PNG文件!");
    return false;
  }
  const isLt2M = file.size / 1024 / 1024 < 2;
  if (!isLt2M) {
    message.error("图片大小需小于2MB!");
    return false;
  }
  return isJpgOrPng && isLt2M;
}

const props = {
  customRequest: customRequest,
  showUploadList: false, // 不展示文件列表
  beforeUpload: beforeUpload
};

ReactDOM.render(
  <Upload {...props}>
    <Button>
      <Icon type="upload" /> Click to Upload
    </Button>
  </Upload>,
  document.getElementById("container")
);

codesandbox 示例:https://codesandbox.io/s/great-silence-lzdwm?file=/index.js

可在log中查看结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值