Mercurial Hosting > nabble
view src/nabble/view/web/forum/UploadImage2.java @ 19:18cf4872fd7f
remove anonymous posting
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 29 May 2020 22:58:25 -0600 |
parents | 7ecd1a4ef557 |
children |
line wrap: on
line source
package nabble.view.web.forum; import fschmidt.util.java.HtmlUtils; import fschmidt.util.servlet.JtpContext; import nabble.model.FileUpload; import nabble.model.Message; import nabble.model.ModelException; import nabble.model.Site; import nabble.model.User; import nabble.naml.namespaces.TemplateException; import nabble.view.lib.Jtp; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; public final class UploadImage2 extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(UploadImage2.class); protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { JtpContext jtpContext = (JtpContext)getServletContext().getAttribute(JtpContext.attrName); jtpContext.setTimeLimit(request,0L); User user = Jtp.getUser(request); if( user==null ) { Jtp.login("You must login to upload an image.",request,response); return; } PrintWriter out = response.getWriter(); out.print( "\r\n<html>\r\n<body>\r\n<script type=\"text/javascript\">\r\n" ); try { final Map<String,FileItem> map; try { map = Jtp.getFileItems(request); } catch(FileUploadException e) { logger.warn("",e); throw ModelException.newInstance( "upload_image_failed", "upload failed - " + e.getMessage() ); } FileItem fi = map.get("image"); if (fi == null || fi.getName() == null || fi.getName().length() == 0) { String urlS = map.get("imageUrl").getString(); URL url; try { url = new URL(urlS); } catch(MalformedURLException e) { throw ModelException.newInstance("invalid_url", "Invalid URL: "+urlS, e); } fi = new FileUpload.UrlFileItem(url); try { fi.getInputStream(); } catch (IOException e) { throw ModelException.newInstance("invalid_url", "Invalid URL: "+urlS, e); } } char type = map.get("srcType").getString().charAt(0); long id = Long.parseLong(map.get("srcId").getString()); Site site = Jtp.getSiteNotNull(request); Message.Source src = Message.SourceType.getType(type).getSource(site,id); FileItem resizeSizeFI = map.get("resize-size"); int resize = "none".equals(resizeSizeFI.getString())? 0 : Integer.valueOf(resizeSizeFI.getString()); String name; try { name = FileUpload.uploadImage(fi,src,resize); } catch (TemplateException e) { throw ModelException.newInstance( "upload_image_failed", "Upload failed: " + e.getMessage()); } FileItem floatPositionFI = map.get("float-position"); String floatPosition = floatPositionFI == null? "none" : floatPositionFI.getString(); FileItem descriptionFI = map.get("description"); String description = descriptionFI == null? "null" : '\'' + HtmlUtils.javascriptStringEncode(HtmlUtils.htmlEncode(descriptionFI.getString())) + '\''; out.print( "\r\nparent.Nabble.uploadedImage('" ); out.print( (name) ); out.print( "', '" ); out.print( (floatPosition) ); out.print( "', " ); out.print( (description) ); out.print( ");\r\nparent.Nabble.closeWindows();\r\n" ); } catch(ModelException e) { logger.warn("Image upload failed",e); out.print( "\r\nalert(\"" ); out.print( (HtmlUtils.javascriptStringEncode(e.getMessage())) ); out.print( "\");\r\nhistory.back();\r\n" ); } out.print( "\r\n</script>\r\n</body>\r\n</html>\r\n" ); } }