diff --git a/source/net/yacy/http/servlets/YaCyDefaultServlet.java b/source/net/yacy/http/servlets/YaCyDefaultServlet.java
index 6fdbdf645..502a5fe45 100644
--- a/source/net/yacy/http/servlets/YaCyDefaultServlet.java
+++ b/source/net/yacy/http/servlets/YaCyDefaultServlet.java
@@ -88,17 +88,9 @@ import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import static org.eclipse.jetty.http.HttpHeader.CONTENT_RANGE;
-import static org.eclipse.jetty.http.HttpHeader.IF_MODIFIED_SINCE;
-import static org.eclipse.jetty.http.HttpHeader.IF_UNMODIFIED_SINCE;
-import static org.eclipse.jetty.http.HttpHeader.REQUEST_RANGE;
-import static org.eclipse.jetty.http.HttpMethod.HEAD;
-
+import org.eclipse.jetty.http.HttpHeader;
+import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.MimeTypes;
-
-import static org.eclipse.jetty.http.MimeTypes.Type.TEXT_HTML;
-import static org.eclipse.jetty.http.MimeTypes.Type.TEXT_HTML_UTF_8;
-
import org.eclipse.jetty.io.WriterOutputStream;
import org.eclipse.jetty.server.InclusiveByteRange;
import org.eclipse.jetty.util.MultiPartOutputStream;
@@ -431,12 +423,12 @@ public class YaCyDefaultServlet extends HttpServlet {
protected boolean passConditionalHeaders(HttpServletRequest request, HttpServletResponse response, Resource resource)
throws IOException {
try {
- if (!request.getMethod().equals(HEAD.asString())) {
+ if (!request.getMethod().equals(HttpMethod.HEAD.asString())) {
- String ifms = request.getHeader(IF_MODIFIED_SINCE.asString());
+ String ifms = request.getHeader(HttpHeader.IF_MODIFIED_SINCE.asString());
if (ifms != null) {
- long ifmsl = request.getDateHeader(IF_MODIFIED_SINCE.asString());
+ long ifmsl = request.getDateHeader(HttpHeader.IF_MODIFIED_SINCE.asString());
if (ifmsl != -1) {
if (resource.lastModified() / 1000 <= ifmsl / 1000) {
response.reset();
@@ -448,7 +440,7 @@ public class YaCyDefaultServlet extends HttpServlet {
}
// Parse the if[un]modified dates and compare to resource
- long date = request.getDateHeader(IF_UNMODIFIED_SINCE.asString());
+ long date = request.getDateHeader(HttpHeader.IF_UNMODIFIED_SINCE.asString());
if (date != -1) {
if (resource.lastModified() / 1000 > date / 1000) {
@@ -487,7 +479,7 @@ public class YaCyDefaultServlet extends HttpServlet {
}
byte[] data = dir.getBytes("UTF-8");
- response.setContentType(TEXT_HTML_UTF_8.asString());
+ response.setContentType(MimeTypes.Type.TEXT_HTML_UTF_8.asString());
response.setContentLength(data.length);
response.setHeader(HeaderFramework.CACHE_CONTROL, "no-cache, no-store");
response.setDateHeader(HeaderFramework.EXPIRES, System.currentTimeMillis() + 10000); // consider that directories are not modified that often
@@ -542,7 +534,7 @@ public class YaCyDefaultServlet extends HttpServlet {
if (ranges == null || ranges.isEmpty()) {
writeHeaders(response, resource, content_length);
response.setStatus(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
- response.setHeader(CONTENT_RANGE.asString(),
+ response.setHeader(HttpHeader.CONTENT_RANGE.asString(),
InclusiveByteRange.to416HeaderRangeString(content_length));
resource.writeTo(out, 0, content_length);
out.close();
@@ -557,7 +549,7 @@ public class YaCyDefaultServlet extends HttpServlet {
long singleLength = singleSatisfiableRange.getSize(content_length);
writeHeaders(response, resource, singleLength);
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
- response.setHeader(CONTENT_RANGE.asString(),
+ response.setHeader(HttpHeader.CONTENT_RANGE.asString(),
singleSatisfiableRange.toHeaderRangeString(content_length));
resource.writeTo(out, singleSatisfiableRange.getFirst(content_length), singleLength);
out.close();
@@ -580,7 +572,7 @@ public class YaCyDefaultServlet extends HttpServlet {
// send an old style multipart/x-byteranges Content-Type. This
// keeps Netscape and acrobat happy. This is what Apache does.
String ctp;
- if (request.getHeader(REQUEST_RANGE.asString()) != null) {
+ if (request.getHeader(HttpHeader.REQUEST_RANGE.asString()) != null) {
ctp = "multipart/x-byteranges; boundary=";
} else {
ctp = "multipart/byteranges; boundary=";
@@ -878,7 +870,7 @@ public class YaCyDefaultServlet extends HttpServlet {
result = RasterPlotter.exportImage(bi, targetExt);
}
- final String mimeType = Classification.ext2mime(targetExt, TEXT_HTML.asString());
+ final String mimeType = Classification.ext2mime(targetExt, MimeTypes.Type.TEXT_HTML.asString());
response.setContentType(mimeType);
response.setContentLength(result.length());
response.setStatus(HttpServletResponse.SC_OK);
@@ -965,7 +957,7 @@ public class YaCyDefaultServlet extends HttpServlet {
templatePatterns.put(SwitchboardConstants.GREETING_HOMEPAGE, sb.getConfig(SwitchboardConstants.GREETING_HOMEPAGE, ""));
templatePatterns.put(SwitchboardConstants.GREETING_SMALL_IMAGE, sb.getConfig(SwitchboardConstants.GREETING_SMALL_IMAGE, ""));
- String mimeType = Classification.ext2mime(targetExt, TEXT_HTML.asString());
+ String mimeType = Classification.ext2mime(targetExt, MimeTypes.Type.TEXT_HTML.asString());
InputStream fis;
long fileSize = targetFile.length();
@@ -1000,7 +992,7 @@ public class YaCyDefaultServlet extends HttpServlet {
*/
private void writeInputStream(HttpServletResponse response, String targetExt, InputStream inStream)
throws IOException {
- final String mimeType = Classification.ext2mime(targetExt, TEXT_HTML.asString());
+ final String mimeType = Classification.ext2mime(targetExt, MimeTypes.Type.TEXT_HTML.asString());
response.setContentType(mimeType);
response.setStatus(HttpServletResponse.SC_OK);
byte[] buffer = new byte[4096];
@@ -1068,9 +1060,13 @@ public class YaCyDefaultServlet extends HttpServlet {
/**
* TODO: add same functionality & checks as in HTTPDemon.parseMultipart
*
- * parse multi-part form data for formfields (only), see also original
+ * parse multi-part form data for formfields, see also original
* implementation in HTTPDemon.parseMultipart
*
+ * For file data the parameter for the formfield contains the filename and a
+ * additional parameter with appendix [fieldname]$file conteins the upload content
+ * (e.g. upload="local/filename" upload$file=[content])
+ *
* @param request
* @param args found fields/values are added to the map
*/
@@ -1104,6 +1100,7 @@ public class YaCyDefaultServlet extends HttpServlet {
}
} else {
// read file upload
+ args.add(item.getFieldName(), item.getName()); // add the filename to the parameters
InputStream filecontent = null;
try {
filecontent = item.getInputStream();
@@ -1115,10 +1112,9 @@ public class YaCyDefaultServlet extends HttpServlet {
}
}
}
- if (files.size() <= 1) {
- for (Map.Entry fe: files) {
- // the file is written in base64 encoded form to a string
- args.put(fe.getKey(), Base64Order.standardCoder.encode(fe.getValue()));
+ if (files.size() <= 1) { // TODO: should include additonal checks to limit parameter.size below rel. large SIZE_FILE_THRESHOLD
+ for (Map.Entry fe: files) { // add the file content to parameter fieldname$file
+ args.put(fe.getKey()+"$file", (fe.getValue()));
}
} else {
// do this concurrently (this would all be superfluous if serverObjects could store byte[] instead only String)