From 45b4ac72081bfcf5ecffc3fd5cfc1e87c51989c6 Mon Sep 17 00:00:00 2001 From: Kshitij <160704796+kshitij-ka@users.noreply.github.com> Date: Tue, 15 Apr 2025 21:22:53 +0530 Subject: [PATCH 1/3] Changed download file API part. Now it downloads the file in server and fetches it to client slide. --- .../controller/HDFScontroller.java | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java b/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java index 1510208..ddfd29e 100644 --- a/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java +++ b/src/main/java/com/skycrate/backend/skycrateBackend/controller/HDFScontroller.java @@ -19,6 +19,11 @@ import java.security.PrivateKey; import java.security.PublicKey; import java.util.List; +import org.springframework.core.io.FileSystemResource; // For FileSystemResource +import org.springframework.core.io.Resource; // For Resource +import org.springframework.http.HttpHeaders; // For HttpHeaders +import java.io.File; // For java.io.File + import static com.skycrate.backend.skycrateBackend.utils.KeyUtil.getPrivateKeyForUser; import static com.skycrate.backend.skycrateBackend.utils.KeyUtil.getPublicKeyForUser; @@ -86,15 +91,31 @@ public class HDFScontroller { @PostMapping("/downloadFile") - public ResponseDTO downloadFile( + public ResponseEntity downloadFile( @RequestParam String hdfsPath, - @RequestParam String localPath, @RequestParam String username) { try { + // Define a temporary local path to download the file + String localPath = "/app/tmp/downloaded/" + new File(hdfsPath).getName(); // Adjust the path as needed + + // Download the file from HDFS to the local path hdfsOperations.downloadFile(hdfsPath, localPath, username); - return new ResponseDTO("File downloaded successfully", true); + + // Create a File object for the downloaded file + File file = new File(localPath); + if (!file.exists()) { + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body(new ResponseDTO("File not found", false)); + } + + // Create a Resource from the file + Resource resource = new FileSystemResource(file); + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"") + .body(resource); } catch (Exception e) { - return new ResponseDTO("Failed to download file: " + e.getMessage(), false); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ResponseDTO("Failed to download file: " + e.getMessage(), false)); } } @@ -128,4 +149,4 @@ public class HDFScontroller { .body("Failed to list files: " + e.getMessage()); } } -} \ No newline at end of file +} From 471d03d0b64e66642b8ec5434537226c25e8754d Mon Sep 17 00:00:00 2001 From: Kshitij <160704796+kshitij-ka@users.noreply.github.com> Date: Tue, 15 Apr 2025 21:24:02 +0530 Subject: [PATCH 2/3] Deleted empty test file. --- .../SkycrateBackendApplicationTests.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 src/test/java/com/skycrate/backend/skycrateBackend/SkycrateBackendApplicationTests.java diff --git a/src/test/java/com/skycrate/backend/skycrateBackend/SkycrateBackendApplicationTests.java b/src/test/java/com/skycrate/backend/skycrateBackend/SkycrateBackendApplicationTests.java deleted file mode 100644 index 8195f98..0000000 --- a/src/test/java/com/skycrate/backend/skycrateBackend/SkycrateBackendApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.skycrate.backend.skycrateBackend; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class SkycrateBackendApplicationTests { - - @Test - void contextLoads() { - } - -} From 5225174d517daededcd11db03acadc9865208b6e Mon Sep 17 00:00:00 2001 From: Kshitij <160704796+kshitij-ka@users.noreply.github.com> Date: Tue, 15 Apr 2025 21:24:17 +0530 Subject: [PATCH 3/3] Changed port from 8081 to 8080. --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 53d9a87..c462e02 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -17,7 +17,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.open-in-view=false logging.level.org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer=ERROR -server.port=8081 +server.port=8080