我的STRUTS2文件上传的时候,有的文件能上传成功,有的不能成功,不知道是什么原因。请高手指教。
下面是我的部分代码:
struts.xml
<constant name="struts.i18n.encoding" value="gbk"/>
<constant name="struts.multipart.saveDir" value="c:\"/> <action name="createSpace" class="last.soul.action.CreateSpaceAction"
method="createSpace">
<result name="success" >/pages/member/member_space.jsp</result>
<result name="input" >/pages/member/member_space.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">409600</param>
<param name="allowedTypes">image/bmp,image/gif,image/jpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>jsp文件
上传时的代码:<s:file name="icon" cssStyle="width:200;height:25"></s:file>
显示时的代码:<img src="<s:url value='%{#session.member.memberSpace.icon}'/>" />
action文件省略,因为有的文件能上传成功,所以可能不是这里的问题。另外我在web.xml里配置了一个文件上传的辅助类(struts2本身提供的)。
<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter><filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下面是我的部分代码:
struts.xml
<constant name="struts.i18n.encoding" value="gbk"/>
<constant name="struts.multipart.saveDir" value="c:\"/> <action name="createSpace" class="last.soul.action.CreateSpaceAction"
method="createSpace">
<result name="success" >/pages/member/member_space.jsp</result>
<result name="input" >/pages/member/member_space.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">409600</param>
<param name="allowedTypes">image/bmp,image/gif,image/jpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>jsp文件
上传时的代码:<s:file name="icon" cssStyle="width:200;height:25"></s:file>
显示时的代码:<img src="<s:url value='%{#session.member.memberSpace.icon}'/>" />
action文件省略,因为有的文件能上传成功,所以可能不是这里的问题。另外我在web.xml里配置了一个文件上传的辅助类(struts2本身提供的)。
<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter><filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决方案 »
- 实现验证用户名是否存在、若不存在插入数据库
- 请教nutch Crawl的问题
- 各位大侠帮忙啊 tomcat 项目 running false
- 求解析URL正则表达式,急,大虾快来看看
- 高分求weblogic8.1的虚拟主机配置方法
- 好东西,好网站,和大家一起分享!顶者又分!
- 使用kineditor在线编辑,保存到数据库中之后使用poi导出成word文档出错,望大神指教
- 设置一个链接,访问action的方法,结果后台没报错而服务器报错了,请问各位大神是什么情况啊
- 编译好的servlet文件应该部署到哪里?
- 兄弟门,谁有javamail包,给我发一个
- 求救!!!急!在线等
- 如何协调“美工”与“程序员”的工作呢?
409600/1024=400K
<s:form action="createSpace" method="post" enctype="multipart/form-data" theme="simple">
至于拦截器是框架提供的,我只是配置了一下,上面代码已经贴出。
<constant name="struts.multipart.maxSize" value="104857600" />加个这个试试
上面的代码是修改框架默认的大小限制,应该不是这个问题,默认的是2M,我上传的3,4K的就已经会失败了。。,
private String iconFileName; private String iconContentType; private File icon; public void upload(String root) throws IOException {
InputStream is = new FileInputStream(icon);
File destFile = new File(root);
if(!destFile.exists()){
destFile.mkdirs();
}
OutputStream os = new FileOutputStream(destFile+"/"+ this.getIconFileName());
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
is.close();
os.close();
} @SuppressWarnings("deprecation")
public String createSpace() throws IOException {
HttpServletRequest request = ServletActionContext.getRequest();
MemberInfo info = (MemberInfo) request.getSession().getAttribute(
"member");
MemberSpace space = info.getMemberSpace();
if (space == null) {
space = new MemberSpace();
}
space.setOpinion(this.getOpinion());
space.setRunTime(this.getRuntime());
space.setRunHabit(this.getRunhabit());
space.setRunStar(this.getRunstar());
space.setCellPhone(this.getCellPhone());
space.setRunPlace(this.getRunplace());
System.out.println("icon=" + icon + "iconContype=" + iconContentType
+ "|||iconFilename" + iconFileName);
String root = "d:\\uploadIcon\\" + info.getNickName();
System.out.println("$$$$$$$$$$$" + root + "\\" + iconFileName);
upload(root);
space.setIcon(root+"\\"+iconFileName);
info.setMemberSpace(space);
space.setMemberInfo(info);
IMemberService memberservice = (IMemberService) BeanFactory
.getBean("memberService");
try {
memberservice.modifyMemberinfo(info);
request.setAttribute("message", "个性化空间创建成功");
return "success";
} catch (MemberServiceException e) {
e.printStackTrace();
return "input";
}
}
去掉就可以了
其中这些图片都在一个文件夹下,分别叫face1.gif,face2.gif,face3.gif都是几K的大小。