From 9632450d1607ac9e9e7435a87f83a360cd183bd2 Mon Sep 17 00:00:00 2001 From: Atharva Ombase <94031822+atharvaombase@users.noreply.github.com> Date: Wed, 16 Apr 2025 15:36:49 +0530 Subject: [PATCH] Feat:Added logic to upload the file to the Skycrate --- Frontend/src/components/FileUploadModal.jsx | 87 +++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Frontend/src/components/FileUploadModal.jsx diff --git a/Frontend/src/components/FileUploadModal.jsx b/Frontend/src/components/FileUploadModal.jsx new file mode 100644 index 0000000..b47341c --- /dev/null +++ b/Frontend/src/components/FileUploadModal.jsx @@ -0,0 +1,87 @@ +import React, { useState } from "react"; +import { useSelector } from "react-redux"; + +const FileUploadModal = ({ show, onClose, onUploadSuccess }) => { + const currentPath = useSelector((state) => state.path.currentPath); + const [file, setFile] = useState(null); + const [message, setMessage] = useState(""); + const [uploading, setUploading] = useState(false); + + const uploadFileToHDFS = async () => { + if (!file) { + setMessage("Please select a file before uploading."); + return; + } + + const formData = new FormData(); + formData.append("file", file); + formData.append("hdfsPath", currentPath); + formData.append("uploadedFileName", file.name); + formData.append("username", "kalas"); + + try { + setUploading(true); + setMessage("Uploading file..."); + + const response = await fetch( + `http://192.168.29.61:8080/api/hdfs/uploadFile`, + { method: "POST", body: formData } + ); + + if (!response.ok) { + const errorText = await response.text(); + setMessage(`Upload failed: ${errorText}`); + } else { + setMessage("File uploaded successfully!"); + onUploadSuccess(); // Notify Dashboard to refresh file list + setTimeout(onClose, 1000); + } + } catch (error) { + console.error(error); + setMessage("An error occurred during upload."); + } finally { + setUploading(false); + } + }; + + if (!show) return null; + + return ( +
+
+
+
+

Upload File

+ +
+
+ setFile(e.target.files[0])} + className="w-full mb-4" + /> + {message &&

{message}

} +
+ + +
+
+
+
+ ); +}; + +export default FileUploadModal;