import VideoNews from '@/components/VideoNews'; import { getOssInfo } from '@/services/ant-design-pro/api'; import { getMD5 } from '@/utils'; import { InboxOutlined } from '@ant-design/icons'; import { request } from '@umijs/max'; import { message, Spin, Upload } from 'antd'; import { RcFile } from 'antd/lib/upload'; import React, { useState } from 'react'; import './index.less'; interface Props { value?: string; onChange?: (value?: string) => void; } /** * 视频上传 * @returns */ const UploadVideo: React.FC = ({ value, onChange }) => { /** 变量START */ const [videoFile, setVideoFile] = useState(value); const [loading, setLoading] = useState(false); /** 变量END */ const beforeUpload = async (file: RcFile) => { console.log('file--->', file); const isZipOrRar = file.type === 'video/mp4'; if (!isZipOrRar) { message.error('您只能上传MP4文件!'); } const fileSizeM = file.size / 1024 / 1024; const isLt20M = fileSizeM < 20; if (!isLt20M) { message.error(`视频大小必须小于20MB!`); } return isZipOrRar && isLt20M; }; return (
{ setLoading(true); getOssInfo({ type: 'video/mp4', fileType: 'video' }).then(async (res) => { try { let formData = new FormData(); Object.keys(res.data).forEach((key: string) => { if (key !== 'url') { formData.append(key, res.data[key]); } }); formData.append('file', options.file); const md5 = await getMD5(options.file); let urlData = await request(res?.data?.ossUrl, { method: 'POST', data: formData }); setLoading(false); if (urlData?.data?.url) { setVideoFile(urlData?.data?.url); onChange?.(urlData?.data?.url); } } catch (error) { setLoading(false); } }); }} > {videoFile ? (
) : ( <>

单击或拖动视频到此区域进行上传

素材大小:小于20M

)}
); }; export default React.memo(UploadVideo);