1 package org.roller.presentation.website.tags; 2 3 import org.apache.commons.logging.Log; 4 import org.apache.commons.logging.LogFactory; 5 import org.apache.struts.util.RequestUtils; 6 import org.roller.pojos.UserData; 7 import org.roller.presentation.RollerRequest; 8 9 import java.io.File ; 10 import java.math.BigDecimal ; 11 import java.text.MessageFormat ; 12 import java.util.Hashtable ; 13 import java.util.ResourceBundle ; 14 15 import javax.servlet.ServletContext ; 16 import javax.servlet.http.HttpServletRequest ; 17 import javax.servlet.jsp.JspException ; 18 import javax.servlet.jsp.JspWriter ; 19 import javax.servlet.jsp.tagext.Tag ; 20 import javax.servlet.jsp.tagext.TagSupport ; 21 import org.roller.config.RollerRuntimeConfig; 22 import org.roller.model.FileManager; 23 import org.roller.model.PropertiesManager; 24 import org.roller.model.Roller; 25 import org.roller.model.RollerFactory; 26 27 30 public class FileUploadTag extends TagSupport 31 { 32 static final long serialVersionUID = -1278102416194468310L; 33 34 private transient ResourceBundle bundle = 35 ResourceBundle.getBundle("ApplicationResources"); 36 37 private static Log mLogger = 38 LogFactory.getFactory().getInstance(FileUploadTag.class); 39 40 45 public int doStartTag() throws JspException 46 { 47 JspWriter pw = pageContext.getOut(); 48 try 49 { 50 ServletContext app = pageContext.getServletContext(); 51 52 Roller mRoller = RollerFactory.getRoller(); 53 PropertiesManager pmgr = mRoller.getPropertiesManager(); 54 FileManager fmgr = mRoller.getFileManager(); 55 56 String dir = fmgr.getUploadDir(); 57 58 HttpServletRequest request = 59 (HttpServletRequest )pageContext.getRequest(); 60 RollerRequest rreq = RollerRequest.getRollerRequest(request); 61 UserData user = rreq.getUser(); 62 63 String maxDir = RollerRuntimeConfig.getProperty("uploads.dir.maxsize"); 64 String maxFile = RollerRuntimeConfig.getProperty("uploads.file.maxsize"); 65 BigDecimal maxDirMB = new BigDecimal (maxDir); 66 BigDecimal maxFileMB = new BigDecimal (maxFile); 67 68 int maxDirBytes = (int)(1024000 * maxDirMB.doubleValue()); 69 70 int userDirSize = 0; 72 File d = new File (dir + user.getUserName()); 73 if (d.mkdirs() || d.exists()) 74 { 75 File [] files = d.listFiles(); 76 long dirSize = 0l; 77 for (int i=0; i<files.length; i++) 78 { 79 if (!files[i].isDirectory()) 80 { 81 dirSize = dirSize + files[i].length(); 82 } 83 } 84 userDirSize = new Long (dirSize).intValue(); 85 } 86 87 boolean uploadEnabled = 88 RollerRuntimeConfig.getBooleanProperty("uploads.enabled"); 89 90 if ( !uploadEnabled ) 91 { 92 pw.print("<span class=\"error\">"); 93 pw.print(bundle.getString("uploadFiles.uploadDisabled")); 94 pw.println("</span>"); 95 96 } 97 else if ( userDirSize > maxDirBytes ) 99 { 100 pw.print("<span class=\"error\">"); 101 pw.print(bundle.getString("uploadFiles.exceededQuota")); 102 pw.println("</span><br />"); 103 } 104 else 105 { 106 Hashtable params = new Hashtable (); 107 108 String edit = RequestUtils.computeURL( pageContext, 109 "uploadFiles", null, null, null, params,null,false); 110 pw.print("<form name=\"uploadFiles\" method=\"post\" "); 111 pw.print("action=\"" + edit + "\" "); 112 pw.println("enctype=\"multipart/form-data\">"); 113 pw.println(bundle.getString("uploadFiles.uploadPrompt")+"<br />"); 114 pw.print("<input type=\"file\" "); 115 pw.println("name=\"uploadedFile\" size=\"30\" />"); 116 pw.println(" "); 117 pw.println("<input type=\"submit\" value=\"" 118 +bundle.getString("uploadFiles.upload")+"\" />"); 119 pw.println("<input type=\"hidden\" name=\"method\" value=\"upload\" /><br /><br />"); 120 pw.println(MessageFormat.format( 121 bundle.getString("uploadFiles.quotaNote"), 122 new String [] {maxFileMB.toString(), maxDirMB.toString()})); 123 pw.println("</form>"); 124 } 125 } 126 catch (Exception e) 127 { 128 mLogger.error("Exception writing file upload tag",e); 129 throw new JspException (e); 130 } 131 return Tag.SKIP_BODY; 132 } 133 } 134 | Popular Tags |