struts2上传文件问题

ilove8 2009-11-14 05:50:52
struts2 拦截不允许文件类型成功后,跳转到input页面,但,该action所有方法失效.
只有当把tomcat关闭重新启动后,才恢复action的方法.

是不是spring单例问题?

注:struts版本2.1.18
spring版本2.5.6
spring旧的版本非单例singleTon="false"
spring新的版本非单例是不是scope="prototype"

struts.xml
<action name="add_standardFiles" class="standardFilesAction" method="addStandardFiles">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">text/plain,image/jpeg,application/msword</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success" type="redirectAction">standardFiles</result>
<result name="successAndContinueAdd" type="chain">load_add_standardFiles</result>
<result name="fail" >/standardfiles/add_standardfiles.jsp</result>
<result name="input">/error.jsp</result>
</action>


上传的jsp

<td>文件名称:</td>
<td><input type="file" name="myFile" id="myFile" /></td>


相应Action调用方法
public String addStandardFiles(){
try {
if(myFile==null){
return "fail";
}

String sFileCode = DBProcedure.getCreateTableNo(1);
standardFiles.setFileCode(sFileCode);
standardFiles.setFileObject(myFile);//对象获得文件信息
standardFiles.setFileName(myFileFileName);//对象获得文件名称
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
standardFiles.setStatusDate(sdf.format(new Date()));
HttpSession session = ServletActionContext.getRequest().getSession();
standardFiles.setUserCode(session.getAttribute("staffCode").toString());
standardFiles.setUserName(session.getAttribute("username").toString());
standardFiles.setStatus("1");
standardFilesService.addStandardFiles(standardFiles);

//保存成功后,再打开新增页面等待下一次新增
return SUCCESS;
//System.out.println("N...");
//return SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;

}


...全文
206 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhliangliang2008 2010-02-15
  • 打赏
  • 举报
回复
我要看那个答案!一一一一五
bolins 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bayougeng 的回复:]
引用 3 楼 ilove8 的回复:
该action调用后显示页面提示找不到action name


这个不是问题的根本,是别的错误导致的。
我这里也发现过,页面上说找不到Action,其实是上一次操作的异常导致。
<param name="allowedTypes">text/plain,image/jpeg,application/msword </param>
为什么这个里面没有xls文件呢?
[/Quote]
是的,确实是这样子的。问题很明显。完全正确。
bayougeng 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ilove8 的回复:]
该action调用后显示页面提示找不到action name
[/Quote]

这个不是问题的根本,是别的错误导致的。
我这里也发现过,页面上说找不到Action,其实是上一次操作的异常导致。
<param name="allowedTypes">text/plain,image/jpeg,application/msword</param>
为什么这个里面没有xls文件呢?
晴天1999 2009-11-14
  • 打赏
  • 举报
回复
新手哈!多多指教!
zhuhichn 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ilove8 的回复:]
后台显示信息如下:
警告: Content-Type not allowed: myFile "物流与商业服务事业部通讯录.xls" "upload__1e8c6b4f_124f220bc7d__8000_00000001.tmp" application/vnd.ms-excel
[/Quote]
这里已经提示了啊类型不允许,说明拦截器已经起作用了啊。
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
<s:form action="addStandardFiles" method="post" enctype="multipart/form-data">
<s:file name="myFile" label="File" />
<s:submit />
</s:form>

这样写看看?
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
哦加了的 没看到
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
是不是struts.xml里面要加个
<interceptor-ref name="defaultStack" />
ilove8 2009-11-14
  • 打赏
  • 举报
回复
后台显示信息如下:
2009-11-14 17:58:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Content-Type not allowed: myFile "物流与商业服务事业部通讯录.xls" "upload__1e8c6b4f_124f220bc7d__8000_00000001.tmp" application/vnd.ms-excel
2009-11-14 17:58:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Removing file myFile \tmp\upload__1e8c6b4f_124f220bc7d__8000_00000001.tmp
2009-11-14 17:58:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Removing file myFile \tmp\upload__1e8c6b4f_124f220bc7d__8000_00000001.tmp
ilove8 2009-11-14
  • 打赏
  • 举报
回复
该action调用后显示页面提示找不到action name
zhuhichn 2009-11-14
  • 打赏
  • 举报
回复
什么叫action所有方法失效,说下情况。
DOCTYPE 2009-11-14
  • 打赏
  • 举报
回复
过来顶顶你,好像你自己都回答了,这家伙真勤劳,该说的全说完了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧