| | |
| | | } |
| | | |
| | | viewWillAppear() { |
| | | // Reset form to ensure no stale data from previous edits |
| | | this.props.form.resetFields(); |
| | | |
| | | const { editableData } = this.state; |
| | |
| | | const responsePayload = { finalName, ...res.data }; |
| | | data.onSuccess(responsePayload, data.file); |
| | | |
| | | // Note: handleUploadChange will trigger after this via onChange |
| | | } else { |
| | | message.error("上传失败"); |
| | | data.onError(); |
| | |
| | | if (!url && file.response && file.response.finalName) { |
| | | url = this.getPreviewUrl(file.response.finalName); |
| | | } |
| | | // Fallback for old logic or direct string |
| | | if (!url && file.response && file.response.data && typeof file.response.data.data === 'string') { |
| | | url = this.getPreviewUrl(file.response.data.data); |
| | | } |
| | | // If we still don't have a url (e.g. file.originFileObj), we can read it. |
| | | if (!url && file.originFileObj) { |
| | | url = await new Promise((resolve) => { |
| | | const reader = new FileReader(); |
| | |
| | | }); |
| | | } |
| | | |
| | | // Determine type |
| | | const isVideo = (url && url.match(/\.(mp4|webm|ogg)$/i)) || (file.type && file.type.startsWith('video/')); |
| | | let isVideo = (url && url.match(/\.(mp4|webm|ogg)$/i)) || (file.type && file.type.startsWith('video/')); |
| | | |
| | | if (!isVideo && url && !url.startsWith('data:')) { |
| | | try { |
| | | const res = await fetch(url, { method: 'GET' }); |
| | | const contentType = res.headers.get('Content-Type'); |
| | | if (contentType && contentType.startsWith('video/')) { |
| | | isVideo = true; |
| | | } |
| | | } catch (e) { |
| | | console.warn('Check file type failed', e); |
| | | } |
| | | } |
| | | |
| | | this.setState({ |
| | | previewUrl: url, |