| | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.nio.file.Files; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | |
| | | public static final String CONTENT_TYPE = "Content-Type"; |
| | | public static final String LAST_MODIFIED_DATE_HEADER = "Last-Modified"; |
| | | |
| | | //public static final String RANGE_HEADER = "Range"; |
| | | //public static final String CONTENT_RANGE_HEADER = "Content-Range"; |
| | | |
| | | /* Statuscodes */ |
| | | public static final int SC_OK = 200; |
| | | public static final int SC_NOT_FOUND = 404; |
| | | |
| | | //public static final int SC_PARTIAL_CONTENT = 206; |
| | | |
| | | /* HTTP Methoden */ |
| | | public static final String HTTP_GET = "GET"; |
| | | |
| | |
| | | public static final String STR_BYTES = "bytes"; |
| | | public static final String STR_NOT_FOUND = " not found."; |
| | | public static final String LM_PATTERN = "EEE, dd MMM yyyy HH:mm:ss zzz"; |
| | | |
| | | //public static final String STR_BLANK = " "; |
| | | //public static final String STR_DASH = "-"; |
| | | //public static final String STR_COMMA = ","; |
| | | //public static final String STR_DOT = "."; |
| | | //public static final String RANGE_PATTERN = "[^\\d-,]"; |
| | | //public static final String WELCOME_FILE = "index.html"; |
| | | |
| | | /** |
| | | * Den Inhalt einer Datei ausliefern |
| | |
| | | e.sendResponseHeaders(SC_OK, file.length()); |
| | | if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) { |
| | | InputStream in = new FileInputStream(file); |
| | | OutputStream os = e.getResponseBody(); |
| | | byte[] b = new byte[4096]; |
| | | int bytesRead = in.read(b); |
| | | //int b = in.read(); |
| | | while (bytesRead > -1) { |
| | | os.write(b, 0, bytesRead); |
| | | bytesRead = in.read(b); |
| | | } |
| | | in.close(); |
| | | os.flush(); |
| | | os.close(); |
| | | OutputStream os = e.getResponseBody(); |
| | | write(in, os); |
| | | finish(in, os); |
| | | } |
| | | } else { |
| | | sendNotFound(e, file.getName()); |
| | | } |
| | | } |
| | | |
| | | public void write(InputStream in, OutputStream out) throws IOException { |
| | | byte[] b = new byte[4096]; |
| | | int bytesRead = in.read(b); |
| | | while (bytesRead > -1) { |
| | | out.write(b, 0, bytesRead); |
| | | bytesRead = in.read(b); |
| | | } |
| | | } |
| | | |
| | | public void finish(InputStream in, OutputStream out) throws IOException { |
| | | in.close(); |
| | | finish(out); |
| | | } |
| | | |
| | | public void finish(OutputStream out) throws IOException { |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | /** |
| | | * Die Header erzeugen, die unabhängig davon, ob der ganze |
| | | * Inhalt oder nur Teile davon ausgeliefert werden sollen, in der |
| | |
| | | exchange.sendResponseHeaders(code, bytes.length); |
| | | OutputStream os = exchange.getResponseBody(); |
| | | os.write(bytes); |
| | | os.flush(); |
| | | os.close(); |
| | | finish(os); |
| | | } |
| | | |
| | | |