added read parameter from multi-part form fields (to nasty quick-fix)

pull/1/head
reger 12 years ago
parent 105cf8f593
commit 2ee68f76f6

@ -38,6 +38,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Date; import java.util.Date;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -63,6 +65,9 @@ import net.yacy.server.serverObjects;
import net.yacy.server.serverSwitch; import net.yacy.server.serverSwitch;
import net.yacy.server.servletProperties; import net.yacy.server.servletProperties;
import net.yacy.visualization.RasterPlotter; import net.yacy.visualization.RasterPlotter;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConnection; import org.eclipse.jetty.server.HttpConnection;
@ -211,6 +216,11 @@ public class TemplateHandler extends AbstractHandler implements Handler {
String argName = attNames.nextElement(); String argName = attNames.nextElement();
args.put (argName,request.getAttribute(argName).toString()); args.put (argName,request.getAttribute(argName).toString());
} }
// add multipart-form fields to parameter
if (request.getContentType() != null && request.getContentType().startsWith("multipart/form-data")) {
parseMultipart(request, args);
}
// eof modification to read attribute // eof modification to read attribute
RequestHeader legacyRequestHeader = generateLegacyRequestHeader(request, target, targetExt); RequestHeader legacyRequestHeader = generateLegacyRequestHeader(request, target, targetExt);
@ -323,4 +333,38 @@ public class TemplateHandler extends AbstractHandler implements Handler {
byte[] content; byte[] content;
} }
/**
* TODO: add same functionality & checks as in HTTPDemon.parseMultipart
*
* parse multi-part form data for formfields (only), see also original
* implementation in HTTPDemon.parseMultipart
*
* @param request
* @param args found fields/values are added to the map
*/
public void parseMultipart(HttpServletRequest request, serverObjects args) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(4096 * 16);
// Location to save data that is larger than maxMemSize.
// factory.setRepository(new File("."));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(4096 * 8);
try {
// Parse the request to get form field items
@SuppressWarnings("unchecked")
List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator<FileItem> i = fileItems.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (fi.isFormField()) {
args.put(fi.getFieldName(), fi.getString());
}
}
} catch (Exception ex) {
ConcurrentLog.logException(ex);
}
}
} }

Loading…
Cancel
Save