文件上传是为null
晔总 2014-03-25 09:02:54 java.lang.NullPointerException
java.io.FileInputStream.<init>(Unknown Source)
action.email.EmailAction.sendMail(EmailAction.java:93)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:320)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:320)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.
action代码如下
public String sendMail()throws Exception{
String savePath = ServletActionContext.getServletContext().getRealPath("/upload/"+this.getUploadFileName());
FileInputStream fis = new FileInputStream(upload);
FileOutputStream fos = new FileOutputStream(savePath);
IOUtils.copy(fis, fos);
fos.flush();
fis.close();
fis.close();
try {
int year=0;
int month=0;
int day=0;
Calendar c=Calendar.getInstance();//获得系统当前日期
year=c.get(Calendar.YEAR);
month=c.get(Calendar.MONTH)+1;//系统月份从0开始算起
day=c.get(Calendar.DAY_OF_MONTH);
String nowtime=year+"/"+month+"/"+day;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
oaemail.setShangchuanaddress(savePath);
Date fatime=sdf.parse(nowtime);
oaemail.setFamailtime(fatime);
emailServiceImpl.sendEmail(oaemail);
return "success";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
jsp页面代码如下
<form method="post" action="sendMail" name="sendMail" enctype="multipart/form-data" onsubmit="return check(this)">
<div class="main">
<div class="global-width">
<s:include value="left.jsp"></s:include>
<div class="action">
<div class="t">
发送邮件
</div>
<div class="paged">
<table width="90%" height="225" border="0">
<tr>
<td width="129">
收件人:
</td>
<td width="471">
<label for="select"></label>
<select name="oaemail.oausers.userid"
id="oaemail.oausers.userid">
<c:forEach var="love" items="${sessionScope.lovenamelist}">
<option value="${love.userid}" selected="selected">
${love.lovename}
</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>
邮件标题:
</td>
<td>
<label for="textfield"></label>
<input type="text" name="oaemail.mailname" id="oaemail.mailname" onblur="checkEmailName()"/>
</td>
<td id="mailname"><div id="emailname"><font color="red">*</font></div></td>
</tr>
<tr>
<td>
邮件内容:
</td>
<td>
<label for="textarea"></label>
<textarea name="oaemail.content" id="oaemail.content"
cols="45" rows="5"></textarea>
</td>
</tr>
<tr>
<td>
上传附件:
</td>
<td>
<label for="textfield2"></label>
<input type="file" name="upload" id="upload" />
(上传附件不能大于9M)
</td>
<td><font color="red">*</font>必填</td>
</tr>
<tr>
<td>
<input type="hidden" id="oaemail.xiemail" name="oaemail.xiemail" value="${sessionScope.oausers.realyname}" />
</td>
</tr>
<tr>
<td>
<input type="hidden" id="oaemail.lajior" name="oaemail.lajior"
value="否" />
</td>
<td>
<input type="hidden" id="oaemail.state" name="oaemail.state"
value="未读" />
</td>
</tr>
<tr>
<td><div><font color="red">*</font>为必填选项</div></td>
</tr>
<tr>
<td colspan="2">
<div align="center" id="sendMail">
<input type="submit" name="button2" id="button2"
value="发送邮件 "/>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</form>