请问一个struts2上传文件的问题

问题描述

我写了一个struts2上传文件的例子,出现了一个很奇怪的问题,提交表单以后,页面直接跳转到result="input"的页面,action里面的断点也没有执行,而且浏览器上的url显示的是fileupload.action,页面却已经跳转到了input返回页面;如果file控件里不加文件,就会执行action里面的断点

解决方案

解决方案二:
上代码,jsp和Action
解决方案三:
TSysUpfileAction.javapackagems.platform.system.upfile;importjava.io.File;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Iterator;importjava.util.List;importjava.util.Set;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionSupport;@AnnotationForAction(menuCode="1622",pojoName="TSysUpfile")publicclassTSysUpfileActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;privateFileupload;privateStringsavePath;/**查询条件*/privateTSysUpfileschCondition;publicTSysUpfilegetschCondition(){returnschCondition;}publicvoidsetschCondition(TSysUpfileTSysUpfile){if(TSysUpfile==null)TSysUpfile=newTSysUpfile();this.schCondition=TSysUpfile;}/**获取页面数据*/privateTSysUpfileTSysUpfile;publicTSysUpfilegetTSysUpfile(){returnTSysUpfile;}publicvoidsetTSysUpfile(TSysUpfiletmgtupfile){this.TSysUpfile=tmgtupfile;}/**翻页*/privatePageListpl;publicPageListgetpl(){returnthis.pl;}publicvoidsetpl(PageListpagelist){this.pl=pagelist;}/**默认执行方法*/@OverridepublicStringexecute()throwsException{if(this.upload!=null)returninsertData();returnselectRecord();}/**跳转到登记页面*/@SuppressWarnings("unchecked")publicStringaddRecord()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");List<Object>lstParameters=newArrayList<Object>();lstParameters.add(TSysUpfile);lstParameters.add(upload);setTSysUpfile(CrudImpl.addRecord(lstParameters));returnINPUT;}/**跳转到单查页面*/@SuppressWarnings("unchecked")publicStringselectRecord()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");List<Object>lstParameters=newArrayList<Object>();lstParameters.add(TSysUpfile);setTSysUpfile(CrudImpl.selectRecord(lstParameters));returnINPUT;}/**插入数据*/@SuppressWarnings("unchecked")publicStringinsertData()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");StringstrPath=ServletActionContext.getServletContext().getContextPath();List<Object>lstParameters=newArrayList<Object>();System.out.print("okok");lstParameters.add(TSysUpfile);StringfilePath=strPath+savePath;TSysUpfile.setFilePath(filePath);//TSysUpfile.setFileType(fileType);CrudImpl.insertData(lstParameters);returnNONE;}/**修改数据*/@SuppressWarnings("unchecked")publicStringupdateData()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");List<Object>lstParameters=newArrayList<Object>();lstParameters.add(TSysUpfile);CrudImpl.updateData(lstParameters);returnNONE;}/**删除数据*/@SuppressWarnings("unchecked")publicStringdelete()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");List<Object>lstParameters=newArrayList<Object>();lstParameters.add(TSysUpfile);CrudImpl.delete(lstParameters);returnNONE;}/**翻页数据查询*/@SuppressWarnings("unchecked")publicStringselectPage()throwsException{MultiParaCrudInterface<TSysUpfile>CrudImpl=(MultiParaCrudInterface<TSysUpfile>)ParameterPub.getCtx().getBean("upfile");if(pl==null)pl=newPageList();List<Object>lstParameters=newArrayList<Object>();lstParameters.add(schCondition);lstParameters.add(pl);pl=CrudImpl.selectPage(lstParameters);returnSUCCESS;}publicFilegetUpload(){returnupload;}publicvoidsetUpload(Fileupload){this.upload=upload;}publicStringgetSavePath(){returnsavePath;}publicvoidsetSavePath(StringsavePath){this.savePath=savePath;}}fileupload.jsp<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head><scriptlanguage="javascript">functionupfile(){document.upfile.submit();}</script></head><body><s:formaction="upfile"method="post"enctype="multipart/form-data"><inputtype="button"value="de"onClick="upfile()"/><s:submitvalue="axd"/><tableclass="tblInfo"cellspacing="0"cellpadding="0"><thead><tr><thcolspan="4">文件信息</th></tr></thead><tbody><tr><td>请选择文件:</td><tdcolspan="3"><s:filename="upload"/></td></tr></tbody></table></s:form></body></html>struts.xml<struts><includefile="struts-default.xml"/><!--定义含“权限检查拦截器”的包,供其他模块引用--><packagename="struts-default-with-auth-check"extends="struts-default"><interceptors><interceptorname="addbutton"class="ms.platform.base.interceptor.struts.AddButtonsInterceptor"/><interceptorname="testfile"class="ms.platform.base.interceptor.struts.TestFile"/><interceptor-stackname="mydefaultStacks"><interceptor-refname="addbutton"></interceptor-ref><interceptor-refname="defaultStack"></interceptor-ref></interceptor-stack></interceptors><!--设置默认拦截器--><default-interceptor-refname="mydefaultStacks"/><!--设置全局跳转--><global-results><resultname="error">/public/dispatch/error.jsp</result><resultname="login">/product/login/login1.jsp</result></global-results><!--全局异常映射--><global-exception-mappings><exception-mappingresult="error"exception="java.lang.Exception"/></global-exception-mappings></package><packagename="system"extends="struts-default-with-auth-check"><!--文件上传列表--><actionname="upfile"class="ms.platform.system.upfile.TSysUpfileAction"><interceptor-refname="fileUpload"><paramname="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param></interceptor-ref><interceptor-refname="defaultStack"/><resultname="input">/product/system/upfileInfo.jsp</result><resultname="none"type="redirect">upfile!selectPage.action</result><resultname="success">/product/system/upfileList.jsp</result></action></package></struts>
解决方案四:
配置问题,没有找到action可能
解决方案五:
如果jsp页面里的file控件不赋值,就能跳入action,如果赋值,就不进入action,直接跳转到input指向的jsp,控制台和日志里没有错误提示
解决方案六:
privateFileupload;action里面生成upload的get,set方法了吗?publicFilegetUpload(){returnupload;}publicvoidsetUpload(Fileupload){this.upload=upload;}
解决方案七:
if(this.upload!=null)returninsertData();这样判断有问题!你直接提交到insertData();里试试,插入成功可以重定向啊
解决方案八:
引用5楼geovil的回复:

privateFileupload;action里面生成upload的get,set方法了吗?publicFilegetUpload(){returnupload;}publicvoidsetUpload(Fileupload){this.upload=upload;}

get和set方法是有的
解决方案九:
引用6楼geovil的回复:

if(this.upload!=null)returninsertData();这样判断有问题!你直接提交到insertData();里试试,插入成功可以重定向啊

在if(this.upload!=null)增加断点,判断根本就进入不了
解决方案十:
upload是file对象不能用this.upload是不是null来判断的或者不判断或者直接用if(upload!=null)returninsertData();或者if(getUpload()!=null)来判断你问题就出在这里
解决方案十一:
引用9楼geovil的回复:

upload是file对象不能用this.upload是不是null来判断的或者不判断或者直接用if(upload!=null)returninsertData();或者if(getUpload()!=null)来判断你问题就出在这里

这个要怎么判断?我的upload取不到文件数据,每次提交,都是null
解决方案十二:
文件过大或者文件类型不匹配
解决方案十三:
引用11楼zidasine的回复:

文件过大或者文件类型不匹配

struts.xml<!--文件上传列表--><actionname="upfile"class="ms.platform.system.upfile.TSysUpfileAction"><interceptor-refname="fileUpload"><paramname="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param></interceptor-ref><resultname="input">/product/system/upfileInfo.jsp</result><resultname="none"type="redirect">upfile!selectPage.action</result><resultname="success">/product/system/upfileList.jsp</result></action>struts.propertiesstruts.multipart.saveDir=/tmpstruts.multipart.maxSize=100000000我选择的文件是jpg文件,大小为40K
解决方案十四:
在这个函数里下个断点publicvoidsetUpload(Fileupload){this.upload=upload;}看一下upload是不是空
解决方案十五:
引用13楼DoctorWeir的回复:

在这个函数里下个断点publicvoidsetUpload(Fileupload){this.upload=upload;}看一下upload是不是空

加了断点,根本走不到
解决方案:
你上传的文件是多大的,好像需要设置struts2的一个配置文件,那个配置文件中,有一个配置上传文件最大值,那个是struts2中校验,如果那个值比你上传的文件小,那么将不能通过,struts2的校验,故不会提交到action中,当初我们做项目时,我也遇到了同样的问题,后来把那个struts2中的值,设了10G,就解决了这个问题
解决方案:
怎么没了,没说到重点呀,解决了么

时间: 2025-01-29 23:45:07

请问一个struts2上传文件的问题的相关文章

网站建设-请问怎么样可以才可以在短时间内做一个可以上传文件到根目录的网站?

问题描述 请问怎么样可以才可以在短时间内做一个可以上传文件到根目录的网站? 请问怎么样可以才可以在短时间内做一个可以上传文件到根目录的网站?我想做一个网站或是借用一个可以上传文件到根目录的网站 解决方案 找找开源项目吧 ,一部分项目中已经实现了这些...

Struts2上传文件失败,这段代码哪里有错?

问题描述 Struts2上传文件失败,这段代码哪里有错? package com.Music.user; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random;

图片- uploadify 带一个值上传文件,JAVA spring MVC 获取不到值?

问题描述 uploadify 带一个值上传文件,JAVA spring MVC 获取不到值? $(document).ready( function() { $('#file_upload').uploadify( { 'swf' : '${root}uploadify/uploadify.swf',//上传按钮的图片,默认是这个flash文件 'uploader' : '${root}importFile', //上传所处理的服务器 'cancelImg' : 'uploadfiy/uploa

struts 2-关于Struts2上传文件问题。

问题描述 关于Struts2上传文件问题. <package name="pic" namespace="/admin" extends="struts-default"> <action name="addPicAction" class="com.gz.journal.action.AddPicAction" method="addPic"> <resu

求一个SOCKET上传文件的工具类

问题描述 求一个SOCKET上传文件的工具类有客户端和服务器端哪位高手能支持下 解决方案 解决方案二:这么简单的东西.服务端监听一个端口,接受这个端口的数据,写入文件即可.客户端建立相应端口的socket,往里面写数据即可.解决方案三:使用ftp类库吧,,,简单..

Struts2上传文件的最大Size的设置

    struts2中文件上传的二个限制,一个是struts.multipart.maxSize,如果不设置,struts2 的核心包下的default.properties文件里有默认的大小设置struts.multipart.maxSize=2097152,即2M. 这是struts2文件上传的第一道关.   第二道关是inteceptor中的maximumSize. 当真实的文件大小能通过第一道关时.针对不同的action中配置的inteceptor,maximumSize才能发挥相应的

struts2上传文件出现问题

问题描述 Action代码:publicclassFileUploadAction{privateFileimage;privateStringimageFileName;publicFilegetImage(){returnimage;}publicvoidsetImage(Fileimage){this.image=image;}publicStringgetImageFileName(){returnimageFileName;}publicvoidsetImageFileName(Str

求struts2上传文件代码,最好详细些。新手

问题描述 急,求上传例子,百度那些我都看过,有没有真实的例子. 解决方案 解决方案二: 解决方案三:马上能给你写一个简单的例子,^_^解决方案四:你自己参照着改成s2的吧解决方案五:action://文件上传下载相关属性privateFilefile;privateStringfilename;privateStringfileFileName;privateStringfileContentType;privateStringsavePath;//上传文件publicStringupload(

Struts2上传文件的问题

问题描述 /****/packagetongji.sse.zxd.service.upload;importjava.io.File;importjavax.servlet.ServletContext;importorg.apache.commons.io.FileUtils;importorg.apache.struts2.util.ServletContextAware;importcom.opensymphony.xwork2.ActionSupport;publicclassStrut