KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > roller > presentation > website > tags > FileUploadTag


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 JavaDoc;
10 import java.math.BigDecimal JavaDoc;
11 import java.text.MessageFormat JavaDoc;
12 import java.util.Hashtable JavaDoc;
13 import java.util.ResourceBundle JavaDoc;
14
15 import javax.servlet.ServletContext JavaDoc;
16 import javax.servlet.http.HttpServletRequest JavaDoc;
17 import javax.servlet.jsp.JspException JavaDoc;
18 import javax.servlet.jsp.JspWriter JavaDoc;
19 import javax.servlet.jsp.tagext.Tag JavaDoc;
20 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
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 /**
28  * @jsp.tag name="FileUpload"
29  */

30 public class FileUploadTag extends TagSupport JavaDoc
31 {
32     static final long serialVersionUID = -1278102416194468310L;
33     
34     private transient ResourceBundle JavaDoc bundle =
35         ResourceBundle.getBundle("ApplicationResources");
36     
37     private static Log mLogger =
38         LogFactory.getFactory().getInstance(FileUploadTag.class);
39
40     //-------------------------------------------------------------
41
/**
42      * Process start tag.
43      * @return EVAL_SKIP_BODY
44      */

45     public int doStartTag() throws JspException JavaDoc
46     {
47         JspWriter JavaDoc pw = pageContext.getOut();
48         try
49         {
50             ServletContext JavaDoc app = pageContext.getServletContext();
51             
52             Roller mRoller = RollerFactory.getRoller();
53             PropertiesManager pmgr = mRoller.getPropertiesManager();
54             FileManager fmgr = mRoller.getFileManager();
55
56             String JavaDoc dir = fmgr.getUploadDir();
57
58             HttpServletRequest JavaDoc request =
59                 (HttpServletRequest JavaDoc)pageContext.getRequest();
60             RollerRequest rreq = RollerRequest.getRollerRequest(request);
61             UserData user = rreq.getUser();
62             
63             String JavaDoc maxDir = RollerRuntimeConfig.getProperty("uploads.dir.maxsize");
64             String JavaDoc maxFile = RollerRuntimeConfig.getProperty("uploads.file.maxsize");
65             BigDecimal JavaDoc maxDirMB = new BigDecimal JavaDoc(maxDir);
66             BigDecimal JavaDoc maxFileMB = new BigDecimal JavaDoc(maxFile);
67             
68             int maxDirBytes = (int)(1024000 * maxDirMB.doubleValue());
69
70             // determine the number of bytes in user's directory
71
int userDirSize = 0;
72             File JavaDoc d = new File JavaDoc(dir + user.getUserName());
73             if (d.mkdirs() || d.exists())
74             {
75                 File JavaDoc[] 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 JavaDoc(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             // if user has exceeded maximum do not allow upload
98
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 JavaDoc params = new Hashtable JavaDoc();
107
108                 String JavaDoc 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("&nbsp;");
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 JavaDoc[] {maxFileMB.toString(), maxDirMB.toString()}));
123                 pw.println("</form>");
124             }
125         }
126         catch (Exception JavaDoc e)
127         {
128             mLogger.error("Exception writing file upload tag",e);
129             throw new JspException JavaDoc(e);
130         }
131         return Tag.SKIP_BODY;
132     }
133 }
134
Popular Tags