check file extension on drag/drop

This commit is contained in:
proddy
2024-08-15 21:56:49 +02:00
parent 500a398dd1
commit 1a6bfebf9b

View File

@@ -16,11 +16,22 @@ const DragNdrop = ({ onFileSelected }) => {
const inputRef = useRef<HTMLInputElement | null>(null); const inputRef = useRef<HTMLInputElement | null>(null);
const { LL } = useI18nContext(); const { LL } = useI18nContext();
const checkFileExtension = (file: File) => {
const validExtensions = ['.json', '.txt', '.csv', '.bin', '.md5'];
const fileName = file.name;
const fileExtension = fileName.substring(fileName.lastIndexOf('.'));
if (validExtensions.includes(fileExtension)) {
setFile(file);
} else {
alert('Invalid file type');
}
};
const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => { const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {
if (!e.target.files) { if (!e.target.files) {
return; return;
} }
setFile(e.target.files[0]); checkFileExtension(e.target.files[0]);
e.target.value = ''; // this is to allow the same file to be selected again e.target.value = ''; // this is to allow the same file to be selected again
}; };
@@ -28,7 +39,7 @@ const DragNdrop = ({ onFileSelected }) => {
event.preventDefault(); event.preventDefault();
const droppedFiles = event.dataTransfer.files; const droppedFiles = event.dataTransfer.files;
if (droppedFiles.length > 0) { if (droppedFiles.length > 0) {
setFile(droppedFiles[0]); checkFileExtension(droppedFiles[0]);
} }
}; };
@@ -63,7 +74,7 @@ const DragNdrop = ({ onFileSelected }) => {
hidden hidden
onChange={handleFileChange} onChange={handleFileChange}
ref={inputRef} ref={inputRef}
accept=".json,.txt,.csv,.bin" accept=".json,.txt,.csv,.bin,.md5"
multiple={false} multiple={false}
style={{ display: 'none' }} style={{ display: 'none' }}
/> />