From ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5 Mon Sep 17 00:00:00 2001 From: ulrich Date: Sat, 27 Mar 2021 14:32:52 +0000 Subject: [PATCH] Anpassungen am FielHandler, Stop-Ablauf verfeinert --- src/de/uhilger/minsrv/handler/FileHandler.java | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/de/uhilger/minsrv/handler/FileHandler.java b/src/de/uhilger/minsrv/handler/FileHandler.java index 035ad25..570e4e2 100644 --- a/src/de/uhilger/minsrv/handler/FileHandler.java +++ b/src/de/uhilger/minsrv/handler/FileHandler.java @@ -57,6 +57,7 @@ public static final String ACCEPT_RANGES_HEADER = "Accept-Ranges"; public static final String LAST_MODIFIED_DATE_HEADER = "Last-Modified"; public static final String CONTENT_TYPE = "Content-Type"; + public static final String CONTENT_LENGTH = "Content-Length"; /* Statuscodes */ public static final int SC_OK = 200; @@ -110,7 +111,7 @@ if (headers.containsKey(RANGE_HEADER)) { serveFileParts(e, new File(fileBase, fName)); } else { - if (fName.endsWith(Server.STR_SLASH)) { + if (fName.length() < 1 || fName.endsWith(Server.STR_SLASH)) { fName += WELCOME_FILE; } serveFile(e, new File(fileBase, fName)); @@ -118,6 +119,13 @@ } } + /** + * Den Namen der gewünschten Datei aus der HTTP-Anfrage ermitteln + * + * @param e das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum + * Anfertigen und Senden der Antwort + * @return Name der gewünschten Datei + */ protected String getFileName(HttpExchange e) { String ctxPath = e.getHttpContext().getPath(); String uriPath = e.getRequestURI().getPath(); @@ -135,11 +143,12 @@ */ protected void serveFile(HttpExchange e, File file) throws IOException { if (file.exists()) { - OutputStream os = e.getResponseBody(); setHeaders(e, file); + e.getResponseHeaders().set(CONTENT_LENGTH, Long.toString(file.length())); e.sendResponseHeaders(SC_OK, file.length()); if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) { InputStream in = new FileInputStream(file); + OutputStream os = e.getResponseBody(); int b = in.read(); while (b > -1) { os.write(b); @@ -180,8 +189,6 @@ */ protected void serveFileParts(HttpExchange e, File file) throws IOException { if (file.exists()) { - InputStream is = new FileInputStream(file); - OutputStream os = e.getResponseBody(); setHeaders(e, file); long responseLength = 0; long start = 0; @@ -198,6 +205,8 @@ } e.sendResponseHeaders(SC_PARTIAL_CONTENT, responseLength); if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) { + InputStream is = new FileInputStream(file); + OutputStream os = e.getResponseBody(); if (start > 0) { is.skip(start); } @@ -354,7 +363,7 @@ * aus Bytes, der sich aus den Bytepositionen des Beginns und Endes * des Bereiches ergibt. */ - class Range { + public class Range { private long start; private long end; -- Gitblit v1.9.3