From a5168a282b4a65481d177b8e65fc1a2f5859590c Mon Sep 17 00:00:00 2001 From: Kshitij <160704796+kshitij-ka@users.noreply.github.com> Date: Tue, 15 Apr 2025 11:04:40 +0530 Subject: [PATCH] Merged Salvi's upload functionality and Ombase's list files functionality. --- Frontend/src/components/FileUpload.jsx | 68 ++++++++++++++++++ Frontend/src/pages/UserPages/Dashboard.jsx | 80 ++++++++++++++++++++++ Frontend/src/utils/api.js | 34 +++++++++ 3 files changed, 182 insertions(+) create mode 100644 Frontend/src/components/FileUpload.jsx create mode 100644 Frontend/src/utils/api.js diff --git a/Frontend/src/components/FileUpload.jsx b/Frontend/src/components/FileUpload.jsx new file mode 100644 index 0000000..2d017c8 --- /dev/null +++ b/Frontend/src/components/FileUpload.jsx @@ -0,0 +1,68 @@ +import React, { useState } from "react"; +import { uploadFileToHDFS } from "../utils/api"; + +const FileUpload = () => { + const [file, setFile] = useState(null); + const [hdfsPath, setHdfsPath] = useState("/kalas"); + const [uploadedFileName, setUploadedFileName] = useState(""); + const [username, setUsername] = useState("kalas"); + + const handleSubmit = (e) => { + e.preventDefault(); + if (!file || !uploadedFileName) { + return; + } + uploadFileToHDFS(file, hdfsPath, uploadedFileName, username); + }; + + return ( +
+

Upload File Your File

+ + { + setFile(e.target.files[0]); + setUploadedFileName(e.target.files[0]?.name || ""); + }} + className="mb-2" + /> + + {/* setHdfsPath(e.target.value)} + className="border p-2 mb-2 w-full" + /> */} + + {/* setUploadedFileName(e.target.value)} + className="border p-2 mb-2 w-full" + /> */} + + {/* setUsername(e.target.value)} + className="border p-2 mb-2 w-full" + /> */} + + +
+ ); +}; + +export default FileUpload; diff --git a/Frontend/src/pages/UserPages/Dashboard.jsx b/Frontend/src/pages/UserPages/Dashboard.jsx index d866320..9e1a582 100644 --- a/Frontend/src/pages/UserPages/Dashboard.jsx +++ b/Frontend/src/pages/UserPages/Dashboard.jsx @@ -1,6 +1,8 @@ import React from "react"; import Sidebar from "../../components/Sidebar"; import FileList from "../../components/FileList"; +import FileUpload from "../../components/FileUpload"; +import { FiPlus } from "react-icons/fi"; const Dashboard = () => { const [files, setFiles] = React.useState([]); @@ -18,10 +20,88 @@ const Dashboard = () => { return ( <> + {/* */} +
+
+

Dashboard

+ +
+ +
+ {/* */} +
diff --git a/Frontend/src/utils/api.js b/Frontend/src/utils/api.js new file mode 100644 index 0000000..0c47348 --- /dev/null +++ b/Frontend/src/utils/api.js @@ -0,0 +1,34 @@ +// utils/api.js +export const uploadFileToHDFS = async ( + file, + hdfsPath, + uploadedFileName, + username +) => { + const formData = new FormData(); + formData.append("file", file); + formData.append("hdfsPath", "/kalas"); + formData.append("uploadedFileName", uploadedFileName); + formData.append("username", "kalas"); + + try { + const response = await fetch( + "http://192.168.29.61:8080/api/hdfs/uploadFile", + { + method: "POST", + body: formData, + } + ); + + if (response.ok) { + const data = await response.json(); // or response.json() if JSON is returned + + console.log("Response:", data); + } else { + console.error("Upload failed with status:", response.status); + } + } catch (error) { + console.error("Error uploading file:", error); + alert("An error occurred while uploading the file."); + } +};