diff --git a/safeshare/safeshare-frontend/src/index.js b/safeshare/safeshare-frontend/src/index.js index 62572ac..d0fed86 100644 --- a/safeshare/safeshare-frontend/src/index.js +++ b/safeshare/safeshare-frontend/src/index.js @@ -4,7 +4,9 @@ import {BrowserRouter as Router, Routes, Route} from "react-router-dom"; import './index.css'; //import App from './App'; import reportWebVitals from './reportWebVitals'; +import ShareFile from "./pages/shareFile"; import HomePage from "./pages/home"; +import DownloadFile from "./pages/downloadFile"; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( @@ -14,6 +16,8 @@ root.render( }/> + }/> + }/> ); diff --git a/safeshare/safeshare-frontend/src/pages/downloadFile.js b/safeshare/safeshare-frontend/src/pages/downloadFile.js new file mode 100644 index 0000000..6fe66c1 --- /dev/null +++ b/safeshare/safeshare-frontend/src/pages/downloadFile.js @@ -0,0 +1,70 @@ +import React, { useState } from 'react'; +import axios from 'axios'; +import { Link } from 'react-router-dom'; + +function DownloadFile() { + const [passcode, setPasscode] = useState(''); + const [fileData, setFileData] = useState(null); + + const handlePasscodeChange = (e) => { + setPasscode(e.target.value); + }; + + const handleDownloadFile = () => { + if (passcode) { + // Send an API request to your backend with the passcode + axios.get(`http://127.0.0.1:8000/api/files/${passcode}`, { responseType: 'blob' }) + .then((response) => { + // Create a blob from the response data + const blob = new Blob([response.data], { type: response.headers['content-type'] }); + + // Create a URL for the blob + const url = window.URL.createObjectURL(blob); + + // Create a temporary anchor element for downloading the file + const a = document.createElement('a'); + a.href = url; + a.download = 'downloaded-file.txt'; // Specify the filename + a.click(); + + // Revoke the URL to release resources + window.URL.revokeObjectURL(url); + }) + .catch((error) => { + // Handle errors, e.g., show an error message + console.error('File download failed', error); + }); + } else { + // Handle the case when passcode is null or empty + console.error('Passcode is required.'); + // You can show an error message or take other actions as needed. + } + }; + + return ( +
+
+ + Back + +

Download File

+
+ + +
+ +
+
+ ); +} + +export default DownloadFile; diff --git a/safeshare/safeshare-frontend/src/pages/home.js b/safeshare/safeshare-frontend/src/pages/home.js index ab84ee8..7521f87 100644 --- a/safeshare/safeshare-frontend/src/pages/home.js +++ b/safeshare/safeshare-frontend/src/pages/home.js @@ -1,31 +1,24 @@ -import React, {useState} from 'react'; -import {FileUploader} from "react-drag-drop-files"; -import axios from "axios"; +import React from 'react'; +import { Link } from 'react-router-dom'; // Assuming you're using React Router for navigation function HomePage() { - const [file, setFile] = useState(null); - const handleChange = (file) => { - setFile(file); - console.log(file); - if (file) { - const formData = new FormData(); - formData.append('file', file); - - // Send POST request to backend API using Axios - axios.post('http://127.0.0.1:8000/api/files/', formData) - .then(response => { - // Handle a successful response from the server - console.log('File uploaded successfully'); - }) - .catch(error => { - // Handle errors here - console.error('File upload failed', error); - }); - } - - }; return ( - +
+
SafeShare
+ +
+
+ + Upload a File + +
+
+ + Download a File + +
+
+
); } diff --git a/safeshare/safeshare-frontend/src/pages/shareFile.js b/safeshare/safeshare-frontend/src/pages/shareFile.js new file mode 100644 index 0000000..6f30853 --- /dev/null +++ b/safeshare/safeshare-frontend/src/pages/shareFile.js @@ -0,0 +1,70 @@ +import React, { useState } from 'react'; +import { FileUploader } from 'react-drag-drop-files'; +import axios from 'axios'; +import { Link } from 'react-router-dom'; + +function ShareFile() { + const [file, setFile] = useState(null); + const [passcode, setPasscode] = useState(''); + + const handleFileUpload = (file) => { + setFile(file); + setPasscode('1234'); + if (file) { + const formData = new FormData(); + formData.append('files', file); + + // Send POST request to the backend API using Axios + axios.post('http://127.0.0.1:8000/api/files/', formData) + .then(response => { + // Handle a successful response from the server + setPasscode(response.data.passcode); + }) + .catch(error => { + // Handle errors here + console.error('File upload failed', error); + }); + } + }; + + // return ( + //
+ //
+ //

Safe-Share

+ // + // + // {passcode && ( + //
+ // + //
{passcode}
+ //
+ // )} + //
+ //
+ // ); + return ( +
+
+ + Back + +

Share a file with others!

+ + {passcode && ( +
+ +
{passcode}
+
+ )} +
+
+ ); +} + +export default ShareFile;