Package de.uhilger.neon
Class PartialFileServer
- java.lang.Object
-
- de.uhilger.neon.PartialFileServer
-
public class PartialFileServer extends java.lang.Object
Die Klasse PartialFileServer fuehrt die zur Auslieferung von Teilen einer Datei noetigen Handlungen aus.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CONTENT_RANGE_HEADER
static java.lang.String
RANGE_PATTERN
static int
SC_PARTIAL_CONTENT
-
Constructor Summary
Constructors Constructor Description PartialFileServer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.String
contentRangeHdr(Range range, java.io.File file)
Einen Content-Range Header erzeugenprotected RangeGroup
parseRanges(com.sun.net.httpserver.HttpExchange e, java.io.File file)
Die Byte-Ranges aus dem Range-Header ermitteln.void
serveFileParts(com.sun.net.httpserver.HttpExchange e, java.io.File file)
Einen Teil des Inhalts einer Datei ausliefern Wenn eine Range angefragt wird, hat die Antwort einen Content-Range Header wie folgt:Content-Range: bytes 0-1023/146515 Content-Length: 1024
Wenn mehrere Ranges angefragt werden, hat die Antwort mehrere Content-Range Header als Multipart Response.
-
-
-
Field Detail
-
CONTENT_RANGE_HEADER
public static final java.lang.String CONTENT_RANGE_HEADER
- See Also:
- Constant Field Values
-
RANGE_PATTERN
public static final java.lang.String RANGE_PATTERN
- See Also:
- Constant Field Values
-
SC_PARTIAL_CONTENT
public static final int SC_PARTIAL_CONTENT
- See Also:
- Constant Field Values
-
-
Method Detail
-
serveFileParts
public void serveFileParts(com.sun.net.httpserver.HttpExchange e, java.io.File file) throws java.io.IOException
Einen Teil des Inhalts einer Datei ausliefern Wenn eine Range angefragt wird, hat die Antwort einen Content-Range Header wie folgt:Content-Range: bytes 0-1023/146515 Content-Length: 1024
Wenn mehrere Ranges angefragt werden, hat die Antwort mehrere Content-Range Header als Multipart Response. Multipart Responses fehlen dieser Implementierung noch. (vgl. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests)- Parameters:
e
- das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum Anfertigen und Senden der Antwortfile
- die Datei, deren Inhalt teilweise ausgeliefert werden soll- Throws:
java.io.IOException
- falls etwas schief geht entsteht dieser Fehler
-
parseRanges
protected RangeGroup parseRanges(com.sun.net.httpserver.HttpExchange e, java.io.File file)
Die Byte-Ranges aus dem Range-Header ermitteln. Der Range-Header kann unterschiedliche Abschnitte bezeichnen, Beispiele: Range: bytes=200-1000, 2000-6576, 19000- Range: bytes=0-499, -500 (vgl. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)- Parameters:
e
- das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum Anfertigen und Senden der Antwortfile
- die Datei, deren Inhalt ausgeliefert werden soll- Returns:
- die angefragten Byte-Ranges
-
contentRangeHdr
protected java.lang.String contentRangeHdr(Range range, java.io.File file)
Einen Content-Range Header erzeugen- Parameters:
range
- die Range, aus deren Inhalt der Header erzeugt werden sollfile
- die Datei, die den Inhalt liefert, der vom Header bezeichnet wird- Returns:
- der Inhalt des Content-Range Headers
-
-