From 4c528296ec5c8b44a333e6e0f8dd76c7b5aba1ad Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sun, 9 Jun 2019 17:09:02 +0200 Subject: [PATCH] allow multiple files upload --- .../UploadDLockData/components/FileUpload.js | 15 ++++++++------- client/src/store/actions/doorLockActions.js | 7 +++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/client/src/scenes/UploadDLockData/components/FileUpload.js b/client/src/scenes/UploadDLockData/components/FileUpload.js index b185805..c217294 100644 --- a/client/src/scenes/UploadDLockData/components/FileUpload.js +++ b/client/src/scenes/UploadDLockData/components/FileUpload.js @@ -9,7 +9,7 @@ class FileUpload extends Component { super(props); this.state = { - file: null, + files: null, }; this.onFileChange = this.onFileChange.bind(this); @@ -17,16 +17,16 @@ class FileUpload extends Component { } onFileChange(event) { - const file = event.target.files[0]; - this.setState({file}); + const files = event.target.files; + this.setState({files}); }; onUploadClick() { const { uploadDoorLockData } = this.props; - const { file } = this.state; + const { files } = this.state; - if (file) { - uploadDoorLockData(file); + if (files) { + uploadDoorLockData(files); } }; @@ -39,6 +39,7 @@ class FileUpload extends Component { required label="Select DLock file" type="file" + multiple accept=".csv" onChange={this.onFileChange} /> @@ -53,7 +54,7 @@ const mapStateToProps = (state) => ({ }); const mapDispatchToProps = (dispatch) => ({ - uploadDoorLockData: (doorLockDataFile) => uploadDoorLockData(dispatch, doorLockDataFile) + uploadDoorLockData: (doorLockDataFiles) => uploadDoorLockData(dispatch, doorLockDataFiles) }); export default connect(mapStateToProps, mapDispatchToProps)(FileUpload); diff --git a/client/src/store/actions/doorLockActions.js b/client/src/store/actions/doorLockActions.js index 00273f4..a5c5a01 100644 --- a/client/src/store/actions/doorLockActions.js +++ b/client/src/store/actions/doorLockActions.js @@ -6,9 +6,12 @@ import { import API from '../../utilities/api'; -export const uploadDoorLockData = (dispatch, doorLockDataFile) => { +export const uploadDoorLockData = (dispatch, doorLockDataFiles) => { const formData = new FormData(); - formData.append('doorLockDataFile', doorLockDataFile); + const filesArray = Array.from(doorLockDataFiles) || []; + filesArray.forEach((file, index) => { + formData.append(`doorLockDataFile-${index}`, file); + }); const additionalConfig = { headers: {'content-type': 'multipart/form-data'} };