Class FileManager
- java.lang.Object
-
- de.uhilger.httpserver.base.handler.FileHandler
-
- de.uhilger.httpserver.cm.FileManager
-
- All Implemented Interfaces:
HttpHandler
,de.uhilger.httpserver.image.ImageThread.ThreadListener
public class FileManager extends de.uhilger.httpserver.base.handler.FileHandler implements de.uhilger.httpserver.image.ImageThread.ThreadListener
Der FileManager verknuepft einen HTTP-Endpunkt mit einem Ordner des lokalen Dateisystems.
HTTP GET fuer eine Datei innerhalb dieses Ordners liefert den Dateiinhalt aus
HTTP GET fuer einen Ordner liefert eine Liste von dessen Inhalt in JSON
HTTP PUT fuer eine Datei ueberschreibt eine bestehende Datei mit dem im Body uebergebenen Inhalt oder legt eine Datei mit diesem Inhalt an
HTTP POST fuer eine Datei legt eine neue Datei mit dem im Body uebergebenen Inhalt an oder erzeugt eine neue Datei mit einer laufenden Nummer, falls diese Datei schon existiert
HTTP POST fuer einen Ordner legt einen neuen Ordner an wenn er noch nicht existiert oder erzeugt einen HTTP-Fehler 422
HTTP DELETE loescht die Liste der Dateien und Ordner im Body
HTTP PUT ?copyFrom=pfad kopiert die Liste der Datei- oder Ordnernamen im Body der Anfrage vom Pfad in 'copyFrom' zum Pfad dieser Anfrage. Jede Datei, die im Ziel bereits existiert, bekommt im Ziel einen neuen Namen mit einer laufenden Nummer. Bei Ordnern, die im Ziel bereits existieren, bekommt der betreffende Ordner im Ziel zunaechst einen neuen Namen mit einer laufenden Nummer, dann wird der Quellordner ans Ziel kopiert.
HTTP PUT ?moveFrom=pfad verschiebt die Liste der Datei- oder Ordnernamen im Body der Anfrage vom Pfad in 'moveFrom' zum Pfad dieser Anfrage. Jede Datei, die im Ziel bereits existiert, bekommt im Ziel einen neuen Namen mit einer laufenden Nummer. Bei Ordnern, die im Ziel bereits existieren, bekommt der betreffende Ordner im Ziel zunaechst einen neuen Namen mit einer laufenden Nummer, dann wird der Quellordner ans Ziel kopiert.
HTTP PUT mit ?duplicate legt eine Kopie der Datei an
HTTP PUT mit '?renameTo=neuer Name' benennt die Datei oder den Ordner um, sofern der neue Name noch nicht vergeben ist
HTTP PUT mit '?zip' packt den Ordner
HTTP PUT mit '?unzip' entpackt eine Datei
Namenskonventionen:
Ein Pfad mit Schraegstrich ('/') am Ende bezeichnet einen Ordner
Ein Pfad ohne Schraegstrich ('/') am Ende bezeichnet eine Datei
-
-
Field Summary
Fields Modifier and Type Field Description static String
ATTR_ROLE
static int
OP_COPY
static int
OP_DELETE
static int
OP_MOVE
static String
P_COPY
static String
P_DUPLICATE
static String
P_MOVE
static String
P_RENAME
static String
P_UNZIP
static String
P_ZIP
static String
STR_DOT
static String
STR_SLASH
static String
UTF8
-
Fields inherited from class de.uhilger.httpserver.base.handler.FileHandler
ATTR_FILE_BASE, ATTR_WELCOME_FILES, CONTENT_LENGTH, CONTENT_RANGE_HEADER, CONTENT_TYPE, RANGE_HEADER, RANGE_PATTERN, SC_FORBIDDEN, SC_METHOD_NOT_ALLOWED, SC_NOT_FOUND, SC_OK, SC_PARTIAL_CONTENT, SC_UNPROCESSABLE_ENTITY, STR_BLANK, STR_COMMA, STR_DASH, WELCOME_FILE
-
-
Constructor Summary
Constructors Constructor Description FileManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
duplizieren(HttpExchange exchange, de.uhilger.httpserver.base.HttpHelper helper)
String
extractZipfile(String fName, String relPath, HttpExchange e)
void
finished()
void
handle(HttpExchange e)
String
packFolder(String fName, String relPath, HttpExchange e)
Einen Ordner packen.File
renameImgFiles(File targetDir, File targetFile, String newName)
String
umbenennen(HttpExchange exchange, de.uhilger.httpserver.base.HttpHelper helper, String neuerName)
-
-
-
Field Detail
-
UTF8
public static final String UTF8
- See Also:
- Constant Field Values
-
STR_SLASH
public static final String STR_SLASH
- See Also:
- Constant Field Values
-
STR_DOT
public static final String STR_DOT
- See Also:
- Constant Field Values
-
P_COPY
public static final String P_COPY
- See Also:
- Constant Field Values
-
P_MOVE
public static final String P_MOVE
- See Also:
- Constant Field Values
-
P_DUPLICATE
public static final String P_DUPLICATE
- See Also:
- Constant Field Values
-
P_RENAME
public static final String P_RENAME
- See Also:
- Constant Field Values
-
P_ZIP
public static final String P_ZIP
- See Also:
- Constant Field Values
-
P_UNZIP
public static final String P_UNZIP
- See Also:
- Constant Field Values
-
OP_COPY
public static final int OP_COPY
- See Also:
- Constant Field Values
-
OP_MOVE
public static final int OP_MOVE
- See Also:
- Constant Field Values
-
OP_DELETE
public static final int OP_DELETE
- See Also:
- Constant Field Values
-
ATTR_ROLE
public static final String ATTR_ROLE
- See Also:
- Constant Field Values
-
-
Method Detail
-
handle
public void handle(HttpExchange e) throws IOException
- Specified by:
handle
in interfaceHttpHandler
- Overrides:
handle
in classde.uhilger.httpserver.base.handler.FileHandler
- Throws:
IOException
-
finished
public void finished()
- Specified by:
finished
in interfacede.uhilger.httpserver.image.ImageThread.ThreadListener
-
duplizieren
public String duplizieren(HttpExchange exchange, de.uhilger.httpserver.base.HttpHelper helper) throws IOException
- Throws:
IOException
-
umbenennen
public String umbenennen(HttpExchange exchange, de.uhilger.httpserver.base.HttpHelper helper, String neuerName) throws IOException
- Throws:
IOException
-
renameImgFiles
public File renameImgFiles(File targetDir, File targetFile, String newName) throws IOException
- Throws:
IOException
-
extractZipfile
public String extractZipfile(String fName, String relPath, HttpExchange e)
-
packFolder
public String packFolder(String fName, String relPath, HttpExchange e)
Einen Ordner packen. Als Ziel wird eine neue Datei mit Dateiendung '.zip' erzeugt, die so heisst wie der Ordner, der gapckt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der den zu packenden Ordner enthaelt.- Parameters:
fName
- Name des zu packenden OrdnersrelPath
- relativer Pfad zum Ordner, der gepackt werden soll- Returns:
- die Meldung mit dem Ergebnis. Wenn die Meldung nicht "ok" lautet wurde die ZIP-Datei nicht erzeugt und die Meldung nennt den Grund.
-
-