From 1d90683b3e5902fc46a082b38d8f4ac3f33a8283 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 29 Sep 2025 09:21:51 +0200 Subject: [PATCH] implemented file download Signed-off-by: Stephan Richter --- .../java/de/srsoftware/umbrella/files/FileModule.java | 10 ++++++++-- frontend/src/routes/files/Index.svelte | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/files/src/main/java/de/srsoftware/umbrella/files/FileModule.java b/files/src/main/java/de/srsoftware/umbrella/files/FileModule.java index fb640b7..8c782fd 100644 --- a/files/src/main/java/de/srsoftware/umbrella/files/FileModule.java +++ b/files/src/main/java/de/srsoftware/umbrella/files/FileModule.java @@ -29,6 +29,7 @@ import static de.srsoftware.umbrella.core.ModuleRegistry.userService; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; import static de.srsoftware.umbrella.files.Constants.CONFIG_DATABASE; import static de.srsoftware.umbrella.files.Constants.CONFIG_FILESTORE; +import static java.net.HttpURLConnection.HTTP_OK; public class FileModule extends BaseHandler implements FileService { @@ -104,9 +105,14 @@ public class FileModule extends BaseHandler implements FileService { private boolean getFile(HttpExchange ex, File file) throws IOException { var headers = ex.getResponseHeaders(); - //headers.add(CONTENT_TYPE, MIME_PDF); + var conn = file.toURI().toURL().openConnection(); + var ct = conn.getContentType(); + headers.add(CONTENT_TYPE, ct); headers.add(CONTENT_DISPOSITION,"attachment; filename=\""+file.getName()+"\""); - return sendContent(ex,new FileInputStream(file)); + ex.sendResponseHeaders(HTTP_OK, 0L); + new FileInputStream(file).transferTo(ex.getResponseBody()); + return true; + } private Map getDirectory(File file) throws IOException { diff --git a/frontend/src/routes/files/Index.svelte b/frontend/src/routes/files/Index.svelte index dc96f7b..7fce7d7 100644 --- a/frontend/src/routes/files/Index.svelte +++ b/frontend/src/routes/files/Index.svelte @@ -67,7 +67,7 @@ {#each Object.entries(children.files) as [k,v]}
  • - {v} + {v}
  • {/each} {/if}