import React from "react"; import styles from "./index.less"; import { Upload, message } from "antd"; import { LoadingOutlined, PlusOutlined } from "@ant-design/icons"; function getBase64(img, callback) { const reader = new FileReader(); reader.addEventListener("load", () => callback(reader.result)); reader.readAsDataURL(img); } function beforeUpload(file) { const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png"; if (!isJpgOrPng) { message.error("You can only upload JPG/PNG file!"); } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { message.error("Image must smaller than 2MB!"); } return isJpgOrPng && isLt2M; } class Avatar extends React.Component { state = { loading: false }; handleChange = info => { if (info.file.status === "uploading") { this.setState({ loading: true }); return; } if (info.file.status === "done") { // Get this url from response in real world. getBase64(info.file.originFileObj, imageUrl => this.setState({ imageUrl, loading: false }) ); } }; render() { const uploadButton = (
{this.state.loading ? : }
Upload
); const { imageUrl } = this.state; return ( {imageUrl ? ( avatar ) : ( uploadButton )} ); } } export default () => (
);