Commit b6d48803 authored by 周宏民's avatar 周宏民

fix: 富文件编辑器上传附件对附件名有特殊字段处理

parent 3bfaaf53
Pipeline #57669 failed with stages
in 8 seconds
......@@ -3,101 +3,99 @@
* @Author: hongmye
* @Date: 2022-03-21 14:44:49
*/
import React, { useState, useEffect, useContext } from 'react';
import { FileTwoTone, DeleteOutlined, FileImageTwoTone, DownloadOutlined, PictureOutlined } from '@ant-design/icons';
import { DeleteOutlined, DownloadOutlined, PictureOutlined } from '@ant-design/icons';
import { Button, ConfigProvider } from 'antd';
import { useContext, useEffect, useState } from 'react';
import iconFile from './icon_file.png';
function fileListItem(props) {
const [fileList, setFileList] = useState([]);
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls();
function FileListItem(props) {
const [fileList, setFileList] = useState([]);
const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);
const prefixCls = getPrefixCls();
const imgType = ['image/png', 'image/jpg', 'image/jpeg'];
const onPreview = item => {
props.onPreview(item);
};
const onDownLoad = item => {
const a = document.createElement('a');
a.setAttribute('download', item.name);
a.setAttribute('href', item.path);
document.documentElement.appendChild(a);
a.target = '_black';
a.click();
};
useEffect(() => {
setFileList(props.list || []);
}, [props.list]);
return (
<>
{fileList.map((item, index) => {
return (
<div key={index} className={`${prefixCls}-upload-list ${prefixCls}-upload-list-picture`}>
<div className={`${prefixCls}-upload-list-picture-container`}>
<div className={`${prefixCls}-upload-list-item`}>
<div className={`${prefixCls}-upload-list-item-info`}>
<span className={`${prefixCls}-upload-span`}>
<div
className={
`${prefixCls}-upload-list-item-thumbnail ${prefixCls}-upload-list-item-file`
}
>
{/* {imgType.includes(item.type) ? <FileImageTwoTone /> : <FileTwoTone />} */}
<img src={iconFile} />
</div>
<span
className={`${prefixCls}-upload-list-item-name`}
title={item.name}
style={{ cursor: 'pointer' }}
>
{item.name}
</span>
<span className={`${prefixCls}-upload-list-item-card-actions picture`}>
{imgType.includes(item.type) && (
<Button
title="预览"
type="text"
onClick={e => {
e && e.stopPropagation();
onPreview(item);
}}
style={{ padding: '4px 8px' }}
>
<PictureOutlined />
</Button>
)}
<Button
title="下载"
type="text"
onClick={e => {
e && e.stopPropagation();
onDownLoad(item);
}}
style={{ padding: '4px 8px' }}
>
<DownloadOutlined />
</Button>
{props.type === 'edit' && (
<Button
title="删除文件"
type="text"
onClick={e => {
e && e.stopPropagation();
props.onDel(item);
}}
style={{ padding: '4px 8px' }}
>
<DeleteOutlined />
</Button>
)}
</span>
</span>
</div>
</div>
</div>
const imgType = ['image/png', 'image/jpg', 'image/jpeg'];
const onPreview = (item) => {
props.onPreview(item);
};
const onDownLoad = (item) => {
const a = document.createElement('a');
a.setAttribute('download', item.name);
a.setAttribute('href', item.path);
document.documentElement.appendChild(a);
a.target = '_black';
a.click();
};
useEffect(() => {
setFileList(props.list || []);
}, [props.list]);
return (
<>
{fileList.map((item, index) => {
return (
<div key={index} className={`${prefixCls}-upload-list ${prefixCls}-upload-list-picture`}>
<div className={`${prefixCls}-upload-list-picture-container`}>
<div className={`${prefixCls}-upload-list-item`}>
<div className={`${prefixCls}-upload-list-item-info`}>
<span className={`${prefixCls}-upload-span`}>
<div
className={`${prefixCls}-upload-list-item-thumbnail ${prefixCls}-upload-list-item-file`}
>
{/* {imgType.includes(item.type) ? <FileImageTwoTone /> : <FileTwoTone />} */}
<img src={iconFile} />
</div>
);
})}
</>
);
<span
className={`${prefixCls}-upload-list-item-name`}
title={item.name}
style={{ cursor: 'pointer' }}
>
{item.name}
</span>
<span className={`${prefixCls}-upload-list-item-card-actions picture`}>
{imgType.includes(item.type) && (
<Button
title="预览"
type="text"
onClick={(e) => {
e && e.stopPropagation();
onPreview(item);
}}
style={{ padding: '4px 8px' }}
>
<PictureOutlined />
</Button>
)}
<Button
title="下载"
type="text"
onClick={(e) => {
e && e.stopPropagation();
onDownLoad(item);
}}
style={{ padding: '4px 8px' }}
>
<DownloadOutlined />
</Button>
{props.type === 'edit' && (
<Button
title="删除文件"
type="text"
onClick={(e) => {
e && e.stopPropagation();
props.onDel(item);
}}
style={{ padding: '4px 8px' }}
>
<DeleteOutlined />
</Button>
)}
</span>
</span>
</div>
</div>
</div>
</div>
);
})}
</>
);
}
export default fileListItem;
export default FileListItem;
......@@ -370,9 +370,13 @@ const RichText = forwardRef((props, ref) => {
};
const addFile = (e) => {
if (e.target) {
const file = e.target.files[0];
let file = e.target.files[0];
const pattern =
/[`~!@#$^\-&*()+=|{}':;',\\\[\]\<>\/?~!@#¥……&*()——|{}【】';:""'。,、?\s]/g;
let name = file.name.replace(pattern, '');
const renameFile = new File([file], name);
const formData = new FormData();
formData.append('file', file);
formData.append('file', renameFile);
setLoading(true);
request(API.POST_UPLOADERFILES, {
method: 'POST',
......@@ -392,7 +396,7 @@ const RichText = forwardRef((props, ref) => {
props.onChangeFile(arr);
setLoading(false);
} else {
message.error(res.msg);
res && message.error(res.msg);
setLoading(false);
}
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment