import React from 'react' import {extend} from 'umi-request'; import queryConfig from "./queryConfig"; import {Upload, message} from 'antd'; import {isJSON} from "@/webPublic/one_stop_public/copy"; const getToken = () => { const x = localStorage.getItem('uploadVideoServiceToken'); if(x === "null" || x === "undefined"){ return null; } return x; }; const configService = queryConfig('uploadVideoService'); const token = getToken(); const umiRequest = extend({ // errorHandler, // 默认错误处理 credentials: 'omit', // 默认请求是否带上cookie mode: 'cors', }); export default class VideoUploadCom extends React.Component { constructor(props) { super(props); const {value} = props; let url = value; if (isJSON(value)) { url = JSON.parse(value).url; } this.state = { url: url || '', } } triggerChange = (changedValue) => { // Should provide an event to pass value to Form. const onChange = this.props.onChange; if (onChange) { onChange(changedValue); } }; componentWillReceiveProps(nextProps) { // Should be a controlled component. if ('value' in nextProps) { const {value} = nextProps; if (isJSON(value)) { this.setState({ url: JSON.parse(value).url, }); } } } changeUrl = (info, key) => { if (info.file.status === 'done') { let filePathThis = info?.file?.response?.data?.filePath; message.info('正在获取视频缩略图,请稍后'); if (filePathThis) { setTimeout(() => { umiRequest(`${configService}/folderConvertApi/videoScreenshot?token=${token}`, { method: "POST", // 暂时支持post 请求 headers: { Accept: "application/json;charset=UTF-8", // 'Content-Type': 'application/json', }, requestType: 'form', data: { path: filePathThis, screenshotTime: '00:00:5', }, }).then((res) => { if (res && res.data) { let info = res.data; const {screenshots, url, createTime, downloadUrl, filePath, fileExt} = info; let needInfo = { screenshots, url, createTime, downloadUrl, filePath, fileExt, }; message.success(`视频上传成功`); this.triggerChange(JSON.stringify(needInfo)); } }); }, 3000); } } else if (info.file.status === 'error') { message.error(`视频上传失败`); } }; render() { const {json, disabled} = this.props; const {url} = this.state; console.log(url); return ( <Upload.Dragger disabled={disabled} accept={'.mp4,.webm,.ogg'} url={url} showUploadList={false} name="file" action={configService + '/uploadFileApi/upload'} onChange={this.changeUrl} multiple={false} data={{ isConvert: true, token, }} style={{padding: 0}}> {url ? <video src={url} controls style={{ height: json.height, width: json.width, }}/> : <div style={{height: json.height, width: json.width}}> </div>} </Upload.Dragger> ); } }