diff --git a/src/main/java/org/rostislav/quickdrop/controller/FileRestController.java b/src/main/java/org/rostislav/quickdrop/controller/FileRestController.java index cdbe1f6..68416f1 100644 --- a/src/main/java/org/rostislav/quickdrop/controller/FileRestController.java +++ b/src/main/java/org/rostislav/quickdrop/controller/FileRestController.java @@ -21,7 +21,9 @@ public class FileRestController { @PostMapping("/upload") public ResponseEntity saveFile(@RequestParam("file") MultipartFile file, - FileUploadRequest fileUploadRequest) { + @RequestParam(value = "description") String description, + @RequestParam(value = "keepIndefinitely", defaultValue = "false") boolean keepIndefinitely) { + FileUploadRequest fileUploadRequest = new FileUploadRequest(description, keepIndefinitely); FileEntity fileEntity = fileService.saveFile(file, fileUploadRequest); if (fileEntity != null) { return ResponseEntity.ok(fileEntity); diff --git a/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java b/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java index 2f1dab7..cd9df9b 100644 --- a/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java +++ b/src/main/java/org/rostislav/quickdrop/controller/FileViewController.java @@ -2,15 +2,16 @@ package org.rostislav.quickdrop.controller; import jakarta.servlet.http.HttpServletRequest; import org.rostislav.quickdrop.model.FileEntity; -import org.rostislav.quickdrop.model.FileUploadRequest; import org.rostislav.quickdrop.service.FileService; import org.rostislav.quickdrop.util.FileUtils; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; @@ -30,22 +31,6 @@ public class FileViewController { return "upload"; } - @PostMapping("/upload") - public String saveFile(@RequestParam("file") MultipartFile file, - @RequestParam("description") String description, - @RequestParam(value = "keepIndefinitely", defaultValue = "false") boolean keepIndefinitely, - Model model, HttpServletRequest request) { - FileUploadRequest fileUploadRequest = new FileUploadRequest(description, keepIndefinitely); - FileEntity fileEntity = fileService.saveFile(file, fileUploadRequest); - - if (fileEntity != null) { - model.addAttribute("downloadLink", getDownloadLink(request, fileEntity)); - model.addAttribute("file", fileEntity); - return "fileUploaded"; - } - return "upload"; - } - @GetMapping("/list") public String listFiles(Model model) { List files = fileService.getFiles(); @@ -63,6 +48,16 @@ public class FileViewController { return "fileView"; } + @GetMapping("/uploaded/{uuid}") + public String uploadedFile(@PathVariable String uuid, Model model, HttpServletRequest request) { + FileEntity fileEntity = fileService.getFile(uuid); + model.addAttribute("file", fileEntity); + model.addAttribute("fileSize", FileUtils.formatFileSize(fileEntity.size)); + model.addAttribute("downloadLink", getDownloadLink(request, fileEntity)); + + return "fileUploaded"; + } + @GetMapping("/download/{id}") public ResponseEntity downloadFile(@PathVariable Long id) { return fileService.downloadFile(id); diff --git a/src/main/resources/static/js/upload.js b/src/main/resources/static/js/upload.js index 5e90cd2..1551fb1 100644 --- a/src/main/resources/static/js/upload.js +++ b/src/main/resources/static/js/upload.js @@ -9,7 +9,7 @@ document.getElementById("uploadForm").addEventListener("submit", function (event // Create an AJAX request const xhr = new XMLHttpRequest(); - xhr.open("POST", "/api/file/upload", true); // Updated to use the new API endpoint + xhr.open("POST", "/api/file/upload", true); // Add CSRF token if required const csrfTokenElement = document.querySelector('input[name="_csrf"]'); @@ -23,7 +23,7 @@ document.getElementById("uploadForm").addEventListener("submit", function (event const response = JSON.parse(xhr.responseText); if (response.uuid) { // Redirect to the view page using the UUID from the JSON response - window.location.href = "/file/" + response.uuid; + window.location.href = "/file/uploaded/" + response.uuid; } else { alert("Unexpected response. Please try again."); document.getElementById("uploadIndicator").style.display = "none"; diff --git a/src/main/resources/templates/fileUploaded.html b/src/main/resources/templates/fileUploaded.html index c84cc2c..9cd4ff9 100644 --- a/src/main/resources/templates/fileUploaded.html +++ b/src/main/resources/templates/fileUploaded.html @@ -38,14 +38,8 @@

File Size

-

Renew file lifetime

-
- - -
-

Link

-

+

Download