restriction to upload more files with same name in FileUploadAsync
This commit is contained in:
@@ -57,6 +57,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "GENERATE_SOURCEMAP=false react-scripts start",
|
"start": "GENERATE_SOURCEMAP=false react-scripts start",
|
||||||
|
"start2": "react-scripts start",
|
||||||
"start:dev": "cp environments/dev/* public/loaded-files && rm public/loaded-files/dev.env && cp environments/dev/dev.env .env && PORT=8000 react-scripts start --mode development",
|
"start:dev": "cp environments/dev/* public/loaded-files && rm public/loaded-files/dev.env && cp environments/dev/dev.env .env && PORT=8000 react-scripts start --mode development",
|
||||||
"start:prod": "cp environments/prod/* public/loaded-files && rm public/loaded-files/prod.env && cp environments/prod/prod.env .env && react-scripts start --mode production",
|
"start:prod": "cp environments/prod/* public/loaded-files && rm public/loaded-files/prod.env && cp environments/prod/prod.env .env && react-scripts start --mode production",
|
||||||
"build": "react-scripts build",
|
"build": "react-scripts build",
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import { FileUpload } from 'primereact/fileupload';
|
|||||||
import { Tag } from 'primereact/tag';
|
import { Tag } from 'primereact/tag';
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { head, isEmpty } from 'ramda';
|
import { head, isEmpty } from 'ramda';
|
||||||
|
import { Messages } from 'primereact/messages';
|
||||||
|
|
||||||
|
|
||||||
import { defaultMaxFileSize, mimeTypes } from '../../../../configData';
|
import { defaultMaxFileSize, mimeTypes } from '../../../../configData';
|
||||||
import getFormatedFileSizeText from '../../../../helpers/getFormatedFileSizeText';
|
import getFormatedFileSizeText from '../../../../helpers/getFormatedFileSizeText';
|
||||||
@@ -42,24 +44,50 @@ const FileuploadAsync = ({
|
|||||||
const [acceptFormats, setAcceptFormats] = useState('');
|
const [acceptFormats, setAcceptFormats] = useState('');
|
||||||
const [formatsForInput, setFormatsForInput] = useState('');
|
const [formatsForInput, setFormatsForInput] = useState('');
|
||||||
const inputRef = useRef();
|
const inputRef = useRef();
|
||||||
|
const messagesRef = useRef(null);
|
||||||
|
|
||||||
const customBase64Uploader = (event) => {
|
const customBase64Uploader = (event) => {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
|
const filesToUpload = [];
|
||||||
|
const uploadedFiles = inputRef.current ? inputRef.current.getUploadedFiles() : [];
|
||||||
|
const currentFiles = stateFieldData;
|
||||||
|
|
||||||
for (const file of event.files) {
|
for (const file of event.files) {
|
||||||
|
const isDuplicate = [...uploadedFiles, ...currentFiles].some(
|
||||||
|
(uploadedFile)=>uploadedFile.name === file.name
|
||||||
|
);
|
||||||
|
|
||||||
|
if(isDuplicate){
|
||||||
|
messagesRef.current.show({
|
||||||
|
severity: 'error',
|
||||||
|
summary: __('Attenzione', 'gepafin'),
|
||||||
|
detail: `Il file con nome "${file.name}" è già stato caricato.`,
|
||||||
|
life: 10000
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
formData.append('file', file)
|
formData.append('file', file)
|
||||||
|
filesToUpload.push(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(filesToUpload.length > 0){
|
||||||
FileUploadService.uploadFile(sourceId, formData, callback, errorCallback, [
|
FileUploadService.uploadFile(sourceId, formData, callback, errorCallback, [
|
||||||
['documentType', doctype.toUpperCase()],
|
['documentType', doctype.toUpperCase()],
|
||||||
['sourceType', source.toUpperCase()]
|
['sourceType', source.toUpperCase()]
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const callback = (data) => {
|
const callback = (data, uploadedFiles) => {
|
||||||
if (data.status === 'SUCCESS') {
|
if (data.status === 'SUCCESS') {
|
||||||
setStateFieldData(data.data);
|
setStateFieldData(prevState => [...prevState, ...data.data]);
|
||||||
const uploadedFiles = inputRef.current.getUploadedFiles();
|
const currentUploadedFiles = inputRef.current.getUploadedFiles() || [];
|
||||||
setDataFn(fieldName, [...uploadedFiles, ...data.data], { shouldValidate: true });
|
|
||||||
|
inputRef.current.setUploadedFiles([...currentUploadedFiles, ...data.data]);
|
||||||
inputRef.current.setFiles([]);
|
inputRef.current.setFiles([]);
|
||||||
|
|
||||||
|
setDataFn(fieldName, [...currentUploadedFiles, ...data.data], { shouldValidate: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,6 +214,7 @@ const FileuploadAsync = ({
|
|||||||
return (
|
return (
|
||||||
sourceId && sourceId !== 0
|
sourceId && sourceId !== 0
|
||||||
? <>
|
? <>
|
||||||
|
<Messages ref={messagesRef} />
|
||||||
<label htmlFor={fieldName} className={classNames({ 'p-error': errors[fieldName] })}>
|
<label htmlFor={fieldName} className={classNames({ 'p-error': errors[fieldName] })}>
|
||||||
{label}{config.required ? '*' : null}
|
{label}{config.required ? '*' : null}
|
||||||
{acceptFormats ? ' (' + getPropeMimeLabels(accept) + ')' : null}
|
{acceptFormats ? ' (' + getPropeMimeLabels(accept) + ')' : null}
|
||||||
|
|||||||
Reference in New Issue
Block a user