Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Creative commons Attribution-NonCommercial license. http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
  
  package base.jee.servlet;
  
 
 
Add or replace a template file with the contents uploaded from the end user.
 
 public class TemplateFileUploadServlet extends HttpServlet {
 
 	private static final long serialVersionUID = 1L;
 	private JeeBase jee;
 
 	public TemplateFileUploadServlet(JeeBase jeethrows IOException {
 		this. = jee;
 	}
 
 	public void doGet(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
 		throw new IOException("Missing file upload contents.");
 	}
 
 	public void doPost(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
 		String token = (String)request.getAttribute(.);
 		if(token == null) {
 			for (Cookie cookie : request.getCookies()) {
 					token = cookie.getValue();
 					break;
 				}
 			}
 		}
 
 		User u = .getAPI().getSession(token).get(0);
 
 			throw new IllegalStateException("You do not have permission to manage templates.");
 		}
 
 
 		String auth = getStringValue(request.getPart("a"), request.getCharacterEncoding());
 		if(auth == null || !auth.equals(u.getFormAuthToken())) {
 			throw new IllegalArgumentException("Invalid authentication token. " + auth);
 		}
 
 		String templateName = getStringValue(request.getPart("name"), request.getCharacterEncoding());
 		if(templateName == null) {
 			throw new IllegalArgumentException("Invalid template name.");
 		}
 
 		Template template = .getTemplateManager().getTemplate(templateName);
 		if(template == null) {
 			throw new IllegalArgumentException("Invalid template name.");
 		}
 
 		Part file = request.getPart("file");
 		if(file == null) {
 			throw new IllegalArgumentException("Please attach a file to the upload form.");
 		}
 
 		loadResourceIntoTemplate(templatefileu);
 
 		response.setHeader("Location".getSettings().get("base.url""") + "/template?name=" + StringHelper.urlEscape(templateName));
 		response.setStatus(302);
 	}
 
 	protected void loadResourceIntoTemplate(Template templatePart fileUser uthrows ServletExceptionIOException {
 		String name = getFileName(file);
 
 		// TODO: Don't guess, actually make user specify if it is binary
 		boolean binary = !(name.toLowerCase().endsWith(".txt")
 					|| name.toLowerCase().endsWith(".css")
 					|| name.toLowerCase().endsWith(".html")
 					|| name.toLowerCase().endsWith(".js")
 					|| name.toLowerCase().endsWith(".st")
					|| name.toLowerCase().endsWith(".xml"));
		InputStream in = null;
		try {
			int read = 0;
			final byte[] bytes = new byte[16*1024];
			in = file.getInputStream();
			while ((read = in.read(bytes)) != -1) {
				out.write(bytes, 0, read);
			}
			out.flush();
			byte[] content = out.toByteArray();
			.getAPI().upsertTemplateResource(utemplate.getName(), namecontentbinary);
			template.defineResource(namecontentbinary);
finally {
			if(in != null) { in.close(); }
		}
	}
	private String getFileName(final Part part) {
		final String partHeader = part.getHeader("content-disposition");
		for (String content : partHeader.split(";")) {
			if(content.trim().startsWith("filename")) {
				return content.substring(content.indexOf('=') + 1).trim().replace("\"""");
			}
		}
		return null;
	}
	private String getStringValue(Part partString encodingthrows IOException {
		if(encoding == null) {
			encoding = "UTF-8";
		}
		BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream(), encoding));
		StringBuilder value = new StringBuilder();
		char[] buffer = new char[20*1024];
		for (int length = 0; (length = reader.read(buffer)) > 0;) {
			value.append(buffer, 0, length);
		}
		return value.toString();
	}
New to GrepCode? Check out our FAQ X