菜鸟求助:struts2,点击跳转页面上的链接,然后将数据库的数据信息返回到要跳转到的result页面,数据不出来..

评论-1963&
trackbacks-0
前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题。
Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。
前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts作为框架的。以下是例子所依赖类包的列表:
清单1 依赖类包的列表
首先,创建文件上传页面FileUpload.jsp,内容如下:
@ page language
contentType
text/ charset=utf-8
pageEncoding
@ taglib prefix
/struts-tags
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
="http://www.w3.org/1999/xhtml"
Struts 2 File Upload
="fileUpload"
="multipart/form-data"
="Image File"
s:textfield
="caption"
="Caption"
清单2 FileUpload.jsp
在FileUpload.jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。接下来,&s:file/&标志将文件上传控件绑定到Action的myFile属性。
其次是FileUploadAction.java代码:
java.io.BufferedInputS
java.io.BufferedOutputS
java.io.FileInputS
java.io.FileOutputS
java.io.InputS
java.io.OutputS
java.util.D
org.apache.struts2.ServletActionC
com.opensymphony.xwork2.ActionS
FileUploadAction
ActionSupport
serialVersionUID
BUFFER_SIZE
<span style="color: #24
String contentT
String fileN
String imageFileN
setMyFileContentType(String
contentType)
.contentType
setMyFileFileName(String
setMyFile(File
String getImageFileName()
imageFileN
String getCaption()
setCaption(String
copy(File src, File
InputStream in
OutputStream out
BufferedInputStream(
FileInputStream(src), BUFFER_SIZE);
BufferedOutputStream(
FileOutputStream(dst), BUFFER_SIZE);
[BUFFER_SIZE];
(in.read(buffer)
<span style="color: #
out.write(buffer);
in.close();
out.close();
(Exception e)
e.printStackTrace();
getExtention(String fileName)
fileName.lastIndexOf(
fileName.substring(pos);
&#64;Override
String execute()
imageFileName
Date().getTime()
getExtention(fileName);
File imageFile
File(ServletActionContext.getServletContext().getRealPath(
/UploadImages
imageFileName);
copy(myFile, imageFile);
清单3 tutorial/FileUploadAction.java
在FileUploadAction中我分别写了setMyFileContentType、setMyFileFileName、setMyFile和setCaption四个Setter方法,后两者很容易明白,分别对应FileUpload.jsp中的&s:file/&和&s:textfield/&标志。但是前两者并没有显式地与任何的页面标志绑定,那么它们的值又是从何而来的呢?其实,&s:file/&标志不仅仅是绑定到myFile,还有myFileContentType(上传文件的MIME类型)和myFileFileName(上传文件的文件名,该文件名不包括文件的路径)。因此,&s:file
name="xxx" /&对应Action类里面的xxx、xxxContentType和xxxFileName三个属性。
FileUploadAction作用是将浏览器上传的文件拷贝到WEB应用程序的UploadImages文件夹下,新文件的名称是由系统时间与上传文件的后缀组成,该名称将被赋给imageFileName属性,以便上传成功的跳转页面使用。
下面我们就来看看上传成功的页面:
&#64; page language
contentType
text/ charset=utf-8
pageEncoding
&#64; taglib prefix
/struts-tags
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
="http://www.w3.org/1999/xhtml"
Struts 2 File Upload
="padding:
3 border: solid 1px # text-align: center"
='UploadImages/&s:property
="imageFileName"
s:property
="caption"
清单4 ShowUpload.jsp
ShowUpload.jsp获得imageFileName,将其UploadImages组成URL,从而将上传的图像显示出来。
然后是Action的配置文件:
xml version="1.0"
encoding="UTF-8"
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"
="fileUploadDemo"
="struts-default"
="fileUpload"
="tutorial.FileUploadAction"
interceptor-ref
="fileUploadStack"
="success"
/ShowUpload.jsp
清单5 struts.xml
fileUpload Action显式地应用fileUploadStack的拦截器。
最后是web.xml配置文件:
xml version="1.0"
encoding="UTF-8"
="WebApp_9"
="/xml/ns/j2ee"
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd"
display-name
Struts 2 Fileupload
display-name
filter-name
struts-cleanup
filter-name
filter-class
org.apache.struts2.dispatcher.ActionContextCleanUp
filter-class
filter-name
filter-name
filter-class
org.apache.struts2.dispatcher.FilterDispatcher
filter-class
filter-mapping
filter-name
struts-cleanup
filter-name
url-pattern
url-pattern
filter-mapping
filter-mapping
filter-name
filter-name
url-pattern
url-pattern
filter-mapping
welcome-file-list
welcome-file
index.html
welcome-file
welcome-file-list
清单6 WEB-INF/web.xml
发布运行应用程序,在浏览器地址栏中键入:,出现图示页面:
清单7 FileUpload页面
选择图片文件,填写Caption并按下Submit按钮提交,出现图示页面:
清单8 上传成功页面
在运行上述例子,如果您留心一点的话,应该会发现服务器控制台有如下输出:
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
PM org.apache.struts2.dispatcher.Dispatcher
getSaveDir
INFO: Unable to find 'struts.multipart.saveDir' property setting. Defaulting to
javax.servlet.context.tempdir
<span style="color: #
<span style="color: #07
<span style="color: #
<span style="color: #
<span style="color: #
PM org.apache.struts2.interceptor.FileUploadInterceptor
INFO: Removing file myFile C:\Program Files\Tomcat
<span style="color: #.5
\work\Catalina\localhost\Struts2_Fileupload\upload____7ff7_.tmp
清单9 服务器控制台输出
上述信息告诉我们,struts.multipart.saveDir没有配置。struts.multipart.saveDir用于指定存放临时文件的文件夹,该配置写在struts.properties文件中。例如,如果在struts.properties文件加入如下代码:
struts.multipart.saveDir
清单10 struts配置
这样上传的文件就会临时保存到你根目录下的tmp文件夹中(一般为c:\tmp),如果此文件夹不存在,Struts 2会自动创建一个。
上述例子实现的图片上传的功能,所以应该阻止用户上传非图片类型的文件。在Struts 2中如何实现这点呢?其实这也很简单,对上述例子作如下修改即可。
首先修改FileUpload.jsp,在&body&与&s:form&之间加入“&s:fielderror /&”,用于在页面上输出错误信息。
然后修改struts.xml文件,将Action fileUpload的定义改为如下所示:
="fileUpload"
="tutorial.FileUploadAction"
interceptor-ref
="fileUpload"
="allowedTypes"
image/bmp,image/png,image/gif,image/jpeg
interceptor-ref
interceptor-ref
="defaultStack"
/FileUpload.jsp
="success"
/ShowUpload.jsp
清单11 修改后的配置文件
显而易见,起作用就是fileUpload拦截器的allowTypes参数。另外,配置还引入defaultStack它会帮我们添加验证等功能,所以在出错之后会跳转到名称为“input”的结果,也即是FileUpload.jsp。
发布运行应用程序,出错时,页面如下图所示:
清单12 出错提示页面
上面的出错提示是Struts 2默认的,大多数情况下,我们都需要自定义和国际化这些信息。通过在全局的国际资源文件中加入“struts.messages.error.content.type.not.allowed=The
file you uploaded is not a image”,可以实现以上提及的需求。对此有疑问的朋友可以参考我之前的文章《》。
实现之后的出错页面如下图所示:
清单13 自定义出错提示页面
同样的做法,你可以使用参数“maximumSize”来限制上传文件的大小,它对应的字符资源名为:“struts.messages.error.file.too.large”。
字符资源“struts.messages.error.uploading”用提示一般的上传出错信息。
多文件上传
与单文件上传相似,Struts 2实现多文件上传也很简单。你可以将多个&s:file /&绑定Action的数组或列表。如下例所示。
="doMultipleUploadUsingList"
="multipart/form-data"
清单14 多文件上传JSP代码片段
如果你希望绑定到数组,Action的代码应类似:
String[] uploadFileN
String[] uploadContentT
File[] getUpload()
setUpload(File[]
String[] getUploadFileName()
.uploadFileN
setUploadFileName(String[]
uploadFileName)
.uploadFileNames
uploadFileN
String[] getUploadContentType()
.uploadContentT
setUploadContentType(String[]
uploadContentType)
.uploadContentTypes
uploadContentT
清单15 多文件上传数组绑定Action代码片段
如果你想绑定到列表,则应类似:
uploadFileNames
uploadContentTypes
getUpload()
setUpload(List
getUploadFileName()
.uploadFileN
setUploadFileName(List
uploadFileNames)
.uploadFileNames
uploadFileN
getUploadContentType()
.uploadContentT
setUploadContentType(List
contentTypes)
.uploadContentTypes
清单16 多文件上传列表绑定Action代码片段
在Struts 2中实现文件上传的确是轻而易举,您要做的只是使用&s:file /&与Action的属性绑定。这又一次有力地证明了Struts 2的简单易用。
阅读(103277)
&re: 在Struts 2中实现文件上传
好像还应该加入包servlet-api.jar !!!&&&&&&
&re: 在Struts 2中实现文件上传
好像filename取出来的是null呀,有人碰到这种情况吗?&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
我取出来的filename也是null啊,到底怎么搞的,有些地方没有讲清楚&&&&&&
&re: 在Struts 2中实现文件上传
我取出的也是null,
运行出现下面的错误提示,也就是值都没有传过去.请高手指教
type Exception report
description The server encountered an internal error () that prevented it from fulfilling this request.
java.lang.NullPointerException
tutorial.FileUpload.getExtention(FileUpload.java:76)
tutorial.FileUpload.execute(FileUpload.java:82)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:334)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:195)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:118)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:155)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:180)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:204)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:25)
org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:24)
org.apache.struts2.impl.RequestContextImpl.callInContext(RequestContextImpl.java:147)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:23)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:317)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:242)
&re: 在Struts 2中实现文件上传
怎么没有人回答?请高手指教&&&&&&
&re: 在Struts 2中实现文件上传
&#64;Mike
&#64;tf
请细心对照我文中的步骤去做,结果应该会出来的。
或者你的WEB-INF/web.xml的内容,是否有加入:
& filter &
& filter-name & struts2 &/ filter-name &
& filter-class &
org.apache.struts2.dispatcher.FilterDispatcher
&/ filter-class &
&/ filter &&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
&#64;li
&#64;tf
我想我大概知道错误的原因了,你们可能是漏了一些get/set方法,或者是自己在struts.xml中加入了&interceptor name =&fileUploadStack& class =&tutorial.FileUploadInterceptor& /&,这个不需要自己加入的,是struts2内置的interceptor,会自动调用。我希望我的解决方法可以对你们有用,这里也要对max说声对不起了,没有跑出来是自己没按照规则来做。&&&&&&
&re: 在Struts 2中实现文件上传
请问Max可以出个和文件上传对应的文件下载的例子吗?&&&&&&
&re: 在Struts 2中实现文件上传
谁有和文件下载的的例子的麻烦发到我邮箱好吗?
我的邮箱是susu_zi&#&&&&&&
&re: 在Struts 2中实现文件上传
Max,请问一下为什么我在做多附件上传的时候uploads里面的内容是String型的,而不是File类型的&&&&&&
&re: 在Struts 2中实现文件上传
&#64;tf
Struts 2 的Show Case中有相关的例子
&#64;shenchong
你看错了吧?&&&&&&
&re: 在Struts 2中实现文件上传
学习中!
在此感谢Max!&&&&&&
&re: 在Struts 2中实现文件上传
&#64;Max
我没有看错的,我试过了show case中的相关例子,它拿到的的确是List类型的,但我拿到的却是String的,是不是还需要在哪里配置?或者是jar包的版本问题?&&&&&&
&re: 在Struts 2中实现文件上传
我现在出现如下异常,图片显示不出来
java.io.FileNotFoundException:&D:\Java\jetty-<span style="color: #.1.<span style="color: #\webapps\uploadtest\UploadImages\<span style="color: #.bmp&(系统找不到指定的路径。)
&at&java.io.FileOutputStream.open(Native&Method)
&at&java.io.FileOutputStream.&init&(FileOutputStream.java:<span style="color: #9)
&at&java.io.FileOutputStream.&init&(FileOutputStream.java:<span style="color: #1)
&at&tutorial.FileUploadAction.copy(FileUploadAction.java:<span style="color: #)
&at&tutorial.FileUploadAction.execute(FileUploadAction.java:<span style="color: #4)
&at&sun.reflect.NativeMethodAccessorImpl.invoke0(Native&Method)
&at&sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:<span style="color: #)
&at&sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:<span style="color: #)
&at&java.lang.reflect.Method.invoke(Method.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:<span style="color: #7)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #9)
&at&com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:<span style="color: #3)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:<span style="color: #7)
&at&com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:<span style="color: #)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:<span style="color: #)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:<span style="color: #1)
&at&com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:<span style="color: #)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:<span style="color: #0)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:<span style="color: #6)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:<span style="color: #8)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #4)
&at&com.opensymphony.xwork2.DefaultActionInvocation$<span style="color: #.doProfiling(DefaultActionInvocation.java:<span style="color: #3)
&at&com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:<span style="color: #5)
&at&com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:<span style="color: #1)
&at&org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:<span style="color: #)
&at&org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:<span style="color: #4)
&at&org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:<span style="color: #9)
&at&org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:<span style="color: #89)
&at&org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:<span style="color: #)
&at&org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:<span style="color: #89)
&at&org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:<span style="color: #5)
&at&org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:<span style="color: #6)
&at&org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:<span style="color: #1)
&at&org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:<span style="color: #2)
&at&org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:<span style="color: #5)
&at&org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:<span style="color: #1)
&at&org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:<span style="color: #4)
&at&org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:<span style="color: #9)
&at&org.mortbay.jetty.Server.handle(Server.java:<span style="color: #5)
&at&org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:<span style="color: #2)
&at&org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:<span style="color: #5)
&at&org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:<span style="color: #1)
&at&org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:<span style="color: #8)
&at&org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:<span style="color: #8)
&at&org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:<span style="color: #8)
&at&org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:<span style="color: #2)
<span style="color: #07-<span style="color: #-<span style="color: #&<span style="color: #:<span style="color: #:<span style="color: #&org.apache.struts2.interceptor.FileUploadInterceptor&intercept
信息:&Removing&file&myFile&\tmp\upload_4b01ab_.tmp
大家帮我看看
&re: 在Struts 2中实现文件上传
提醒一下,MAX示例代码中拷贝文件部分:
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) & 0 )
out.write(buffer);
}
有点问题,如果文件的大小,%BUFFERSIZE的余数不为0,则会造成多拷贝了N多K字节,又加之buffer[]里面剩余部分没有被覆盖,导致最后的文件和原来的文件前面部分相等,后面的部分就没有多少规律了,但却又不是全空。
修正方法是:
byte[] buffer = new byte[BUFFER_SIZE];
for (int byteRead = 0; (byteRead = in.read(buffer)) & 0; )
{
out.write(buffer, 0, byteRead);
}
最后一次写入该写的字节就可以了。
&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
文件类型里明明有jpeg,png的,为什么不能上传?
Content-Type not allowed: myFile &upload_3eb7e010_d__2.tmp& image/pjpeg
Content-Type not allowed: myFile &upload_3eb7e010_d__4.tmp& image/x-png&&&&&&
&遇到了同样的问题
上面有人出现的问题我也遇到了,搞不来,哪位高人帮帮忙
java.io.FileNotFoundException: F:\cvs_root\struts\WebContent\UploadImages\7.bmp (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.&init&(Unknown Source)
at java.io.FileOutputStream.&init&(Unknown Source)
at tutorial.FileUploadAction.copy(FileUploadAction.java:55)
at tutorial.FileUploadAction.execute(FileUploadAction.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:334)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:195)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:118)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:155)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:180)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:266)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:193)
at org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:25)
at org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:24)
at org.apache.struts2.impl.RequestContextImpl.callInContext(RequestContextImpl.java:147)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:23)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:317)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:242)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
11:59:10 org.apache.struts2.interceptor.FileUploadInterceptor intercept
信息: Removing file myFile \tmp\upload__7d878dc9_f6__2.tmp&&&&&&
&知道答案了
是文件夹要手动建立&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
不错,什么时候来个struts2+hibernate+spring整合,期待中。。。。。。。。&&&&&&
&re: 在Struts 2中实现文件上传
Struts2.0的上传文件大小默认是2M可以通过在struts.xml里来修改这个大小&constant name=&struts.multipart.maxSize& value=&5242880& /&但是遇到个问题就是这里假如我设置的是5M而我的Action实上设置的为3M此时我上传4M的文件的时候可以捕捉到异常提示我文件过大返回到上传页面如果此时我上传的文件超过了5M则会直接告诉我文件过大虽然也会返回到上传页面但之前上传页面的数据将会丢失比如说从别的页面传递过来的一些参数.请教下该如何解决?谢谢.&&&&&&
&re: 在Struts 2中实现文件上传
max你好,我一直关注着你的struts2,从开始接触struts2就是看的你的博客,受益匪浅,非常感谢你的介绍,现在网上关于struts的内容太少了。你说的批量上传文件,他的文件名里有系统时间,那同一次上传的文件,系统时间是一样的吗&&&&&&
&re: 在Struts 2中实现文件上传
&#64;游客
遇到一个问题,struts2和spring2集成后,在文件上传时,发现fileload拦截器不工作,设置的文件类型和大小都不起作用,不知为什么?,急&&&&&&
&re: 在Struts 2中实现文件上传
点击文件上传时提示Invalid field value for field &myFile&,你的myFile字段时File型,我把他改成String型就可以,然后做相应的修改,请问这到底时为何&&&&&&
&re: 在Struts 2中实现文件上传
我在上传的action中加了拦截器以后,别的action请求也被拦截下来了,fileUpload是全局的吗?怎么解决?&&&&&&
&re: 在Struts 2中实现文件上传
&action name=&dofileUpload& class=&fileUploadAction&
method=&dofileUpload&&
&interceptor-ref name=&fileUpload&&
&param name=&allowedTypes&&
application/vnd.ms-excel,text/plain
&/interceptor-ref&
&interceptor-ref name=&defaultStack&&&/interceptor-ref&
&result name=&input&&WEB-INF/jsp/zzz/upload.jsp&/result&
&result&WEB-INF/jsp/zzz/upload.jsp&/result&
&action name=&uploadClear& class=&fileUploadAction&
method=&uploadClear&&
&result name=&input&&WEB-INF/jsp/zzz/upload.jsp&/result&
&result&WEB-INF/jsp/zzz/upload.jsp&/result&
&/action&
uploadClear提交不到action中去,怎么会这样?&&&&&&
&re: 在Struts 2中实现文件上传
大家帮我看看这个错误啊,包已经添进去了,怎么回事呢?
HTTP Status 404 - /photo/fileUpload
--------------------------------------------------------------------------------
type Status report
message /photo/fileUpload
description The requested resource (/photo/fileUpload) is not available.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.15&&&&&&
&re: 在Struts 2中实现文件上传
终于出来了
相当感谢啊
我是小菜鸟
多多指教!&&&&&&
&re: 在Struts 2中实现文件上传
上传一个大文件时,STRUTS2的拦截器,会报错,说文件过大。但是一次上传几个大文件时,STRUTS2的拦截器就不报任何错误了,也没有提示,不知道为什么啊?&&&&&&
&re: 在Struts 2中实现文件上传
啊 我也出现了这个问题 type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionjava.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location] com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:136) com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:476) com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:486) com.opensymphony.xwork2.inject.ContainerImpl$9.call(ContainerImpl.java:517) com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542) com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:515) org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:697) org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:330) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:390) org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.filter 也配了
上传出现这个,。。。。&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
这么写会存在并发问题吧?&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
当我上传一个空文件时(比如说我建一个 新建文件.txt),报空指针异常,我觉得只要文件存在不管里面有没有内容都不应该报错的啊,为什么?&&&&&&
&re: 在Struts 2中实现文件上传
写的东西不完全对啊&&&&&&
&re: 在Struts 2中实现文件上传
我想问一下,我的form中加了enctype=&multipart/form-data&,配了struts2的校验器校验其他的文本框就不起作用了,去了enctype=&multipart/form-data&,校验器就好用了,这是怎么回事呀?&&&&&&
&re: 在Struts 2中实现文件上传
当我配置web.xml后,网站目录不能浏览,出现404错误!
请问这是什么问题?
谢谢.&&&&&&
&re: 在Struts 2中实现文件上传
Struts2的文件上传只能说是简单的文件上传。
如果一个网站文件上传很重要的话,需要仔细的考虑各种可能性。
&&&&&&
&re: 在Struts 2中实现文件上传
我无法通过拦截器控制上传类型,代码在下面,有谁能帮我看看,我试了很久fileUploadStack这个拦截器就是不起作用,什么文件都能上传。
struts.xml:
&include file =&struts-default.xml& /&
&action name=&fileUpload& class=&struts.FileUpLoad&&
&interceptor-ref name =&fileUploadStack& &
&param name =&allowedTypes& &
image/bmp,image/png,image/gif,image/jpeg
&/interceptor-ref &
&interceptor-ref name =&defaultStack& /&
&result name =&input& &/upload.jsp&/result &
&result name=&success&&/show.jsp&/result&
upload.jsp:
&s:fielderror&&/s:fielderror&
&s:form action=&fileUpload& method=&post&
enctype=&multipart/form-data&&
&s:file name=&myFile& label=&file&&&/s:file&
&s:textfield name=&caption& label =&Caption&&&/s:textfield&
&s:submit&&/s:submit&
&hr&
&&&&&&
&re: 在Struts 2中实现文件上传
&#64;babala
要传.jpg格式的图片,应该是image/pjpeg。
我也不知道为什么,但我按照错误提示,修改后就OK了,希望对你有用&&&&&&
&re: 在Struts 2中实现文件上传
各位有调通多文件上传的吗?多文件上传时,如何把filename,contentType和页面的&s:file&绑定呢??&&&&&&
&re: 在Struts 2中实现文件上传
如果要上传到数据库怎么修改Action和struts.xml配置文件(结合hibernate和spring)&&&&&&
&re: 在Struts 2中实现文件上传
&param name =&allowedTypes&&
image/bmp,image/png,image/gif,image/jpeg,text/xml,application/zip
这里这样写还是不可以传xml格式和zip格式的&&&&&&
&re: 在Struts 2中实现文件上传
&#64;eddie
我也打印不出来
不知道如何修改阻止提交文件的非图片类型以及
显示我友好的错误信息&&&&&&
&re: 在Struts 2中实现文件上传
请问如何更改上传的路径啊
我想要更改成指定路径啊
请多多指教啊&&&&&&
&re: 在Struts 2中实现文件上传
&re: 在Struts 2中实现文件上传
asdasdsadad&&&&&&
&re: 在Struts 2中实现文件上传
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊&&&&&&
&re: 在Struts 2中实现文件上传
asd &&&&&&
&re: 在Struts 2中实现文件上传
还可以&&&&&&
&re: 在Struts 2中实现文件上传
asdfsdfsdf&&&&&&
&re: 在Struts 2中实现文件上传
爱不性&&&&&&
&re: 在Struts 2中实现文件上传
有完整例子吗包括LIB。发一份不胜感激cheerzan&#.cn&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
&#64;Max
我作如下设置:
struts.xml:
&param name=&maximumSize&&102400&/param&
globalMessage_zh_CN.properties:
struts.messages.error.file.too.large=上传文件太大!
strusts.properties:
struts.multipart.maxSize=1048576
当上传的图片大小Size:102400&Size&1048576时,会提示“上传文件太大!”,而当Size&1048576时,页面并不提示,尽管后台打印出了文件太大的信息。我怎么让它在页面也表现出来呢???&&&&&&
&re: 在Struts 2中实现文件上传
# re: 在Struts 2中实现文件上传
09:35 | &#64;游客
点击文件上传时提示Invalid field value for field &myFile&,我的也出现了这个问题,但是我解决了,因为我使用的是 普通的FORM ,没有使用&s:form&标签,但我的FORM 中,没有添加 method='post' 属性,添加后,可以上传文件了。 希望对其它人有帮助。&&&&&&
&re: 在Struts 2中实现文件上传
为什么我什么都是对的,就是图片不显示啊,郁闷,大家帮帮忙啊...&&&&&&
&re: 在Struts 2中实现文件上传
&#64;yihaijian
文件路径错误了吧&&&&&&
&re: 在Struts 2中实现文件上传
感觉跟你们相见恨晚
向你们看齐&#183;&&&&&&
&re: 在Struts 2中实现文件上传
学习struts中,每次程序错误,上网都可以找到高人的解答方法,有种相见恨晚感觉,努力向你们看齐&&&&&&
&re: 在Struts 2中实现文件上传
请问,为什么我上传的struts.xml中设置的所有类型的图片类型文件,都说是
The file you uploaded is not a image啊,还有知道的人 ?????&&&&&&
&re: 在Struts 2中实现文件上传
想不到吧这位同学,2009年的1月9号我也碰到了和你同样的问题,弄不出来,我是按照struts2中文帮助文档做的,什么都没错,就是不显示图片,郁闷。。。。&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
正在学习Struts 2 支持&&&&&&
&re: 在Struts 2中实现文件上传
我运行你的第二个例子的时候,就是限制文件类型时,出错,我按照你的配置修改struts.xml,在上传非图片格式的文件时,仍然可以上传上去,这是怎么回事呀?&&&&&&
&re: 在Struts 2中实现文件上传
&#64;Joe
你的错误是在FileUploadAction.java中getExtention方法下的fileName.lastIndexOf( &.& );引号中只有一个点,而不是有有空格加点的(& . &)这种,我今天碰到这种问题,我把它改过来就可以运行第一个例子了&&&&&&
&re: 在Struts 2中实现文件上传
&#64;zoninge
你的问题怎么解决的阿?我也出现这个问题了&&&&&&
&re: 在Struts 2中实现文件上传
File imageFile = new File(ServletActionContext.getServletContext().getRealPath( & /UploadImages & ) + & / & + imageFileName);
请问一下,这句代码是用来干什么的呢?
我在编译Action的时候,老是说 无法访问javax.servlet.ServletContext
然后说上面那一句代码有错误&&&&&&
&re: 在Struts 2中实现文件上传
刚学struts2,搞此上传文件例子时有如下错误:
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
恳求高人指点!mrzhangtufu&#
&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
&#64;ILOVEYOU
I encountered the same problem, it's because that the directory &UpdateImages& doesn't exist. Please invoke
FileUtils.copyFile(myFile, imageFile);
to replace the original copy method.
Add the below code in copy method to create the parent directory when it does't exist.
if (dst.getParentFile() != null && dst.getParentFile().exists() == false) {
if (dst.getParentFile().mkdirs() == false) {
throw new IOException(&Destination '& + dst + &' directory cannot be created&);
&re: 在Struts 2中实现文件上传
你能说一下怎么存到数据库么,发到&# 谢谢&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
太感谢 了。 &&&&&&
&re: 在Struts 2中实现文件上传[未登录]
thanks &&&&&&
&re: 在Struts 2中实现文件上传
在struts2上传时,我碰到个问题,想请教如果某个文章记录已经上传了图片,而后来发现这个记录要修改,但不需要重新上传图片,只需要修改其它的字段,提交后,发现原来上传的图片记录就没有了为此我还得在页面另外隐藏一个字段,并且在action里做大段处理代码。想请问一下你是否碰到过此问题&&&&&&
&re: 在Struts 2中实现文件上传
存数据库里只需要把fileName图片名存进去i就OK,其实也没必要存数据库的图片的话,放服务器上就行&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
如果我多文件上传,一个文件只准上传图片格式,另外一个没有限制了,该怎么办?&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
請問下,我照你的全都寫了,在上傳那個頁面不管你上傳什麼都不會跳過去,根本一點跳動都沒有,不知道是什麼原因?有沒高手遇到過?&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
&#64;&#64;wo我都是一字不漏的全復過來的,就是在上傳那個頁面根本就不跳,,發呆了&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
您好,我想请问下您写的第一个我试了下报出下面异常:imageFileName===5.jpgjava.io.FileNotFoundException: D:\Tomcat 6.0\webapps\Struts28\UploadImages (存取被拒。) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.&init&(FileOutputStream.java:179) at java.io.FileOutputStream.&init&(FileOutputStream.java:131) at tutorial.FileUploadAction.copy(FileUploadAction.java:57) at tutorial.FileUploadAction.execute(FileUploadAction.java:90) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:306) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)我在路径下找不到图片,感觉好像只是得到了图片名,图片根本就没有上传进去。。。求帮下忙&&&&&&
&re: 在Struts 2中实现文件上传异常
16:48:41 org.apache.struts2.dispatcher.Dispatcher getSaveDir
信息: Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
希望大家帮忙一下怎么处理&&&&&&
&re: 在Struts 2中实现文件上传
public void setMyFileContentType(String contentType) {
this .contentType = contentT
public void setMyFileFileName(String fileName) {
this .fileName = fileN
}这两个方法名是固定的吗?为什么?&&&&&&
&re: 在Struts 2中实现文件上传
在此先感谢作者的这篇文章。上个问题明白了&&&&&&
&re: 在Struts 2中实现文件上传
你能跳转ACTION吗&&&&&&
&re: 在Struts 2中实现文件上传
&#64;carlos175
这个问题怎么解决啊,&&&&&&
&re: 在Struts 2中实现文件上传
&#64;carlos175
可以用freemarker,struts2默认有扩展了freemarker,它生成的静态页也容易给百度,google找到。&&&&&&
&re: 在Struts 2中实现文件上传
in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
for (int byteRead = 0; (byteRead = in.read(buffer)) & 0; )
out.write(buffer, 0, byteRead);
if (null != in)
in.close();
if (null != out)
out.close();
} catch (Exception e)
e.printStackTrace();
BUFFER_SIZE这个地方报错,不知道咋回事啊?&&&&&&
&re: 在Struts 2中实现文件上传
遇到的问题应该是action中 一些字段里存在的空格引起的问题&&&&&&
&re: 在Struts 2中实现文件上传
在WebRoot下建立一个UploadImages文件夹试试&&&&&&
&re: 在Struts 2中实现文件上传
我上传的文件在tomcat中有 但是不显示到我在项目中建立的文件夹中怎么回事&&&&&&
&re: 在Struts 2中实现文件上传
&#64;樱花草
这个问题很简单,你的项目是放在myeclipse的工作空间的,图片上传的路径是服务器的路径,所以项目上肯定是没有的,只有tomcat上有图片&&&&&&
&re: 在Struts 2中实现文件上传
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:136)
at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:476)
at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:486)
at com.opensymphony.xwork2.inject.ContainerImpl$9.call(ContainerImpl.java:517)
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:515)
at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:697)
at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:334)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:595)
Caused by: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider$ObjectFactoryDelegateFactory.create(BeanSelectionProvider.java:247)
at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:134)
... 20 more
求助。。。。&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
缺少common-fileupload.jar&#64;renminyan
&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
不要直接把代码复制过去,仔细检查一下,会发现有问题的&#64;li
&&&&&&
&re: 在Struts 2中实现文件上传
我是新人 ,希望多多指点,文件上传到什么地方去了,如果我要把文件上传到数据库去 怎么办????&&&&&&
&re: 在Struts 2中实现文件上传
&#64;tf
你看下setMyFileFileName有没弄错&&&&&&
&re: 在Struts 2中实现文件上传
你好 我是新人 ,希望多多指点,文件上传到什么地方去了,如果我要把文件上传到数据库去 怎么办????
我的邮箱是zgb6219&#
谢谢了。&&&&&&
&re: 在Struts 2中实现文件上传
&#64;Allen
你好
说说maximumSize在哪设置30M的大小 啊
我一直没弄出来文件大小的设置&&&&&&
&re: 在Struts 2中实现文件上传
博主您好,我照您的方法敲了代码,不过有个问题,就是上传的文件不是存在web根目录下的upload文件夹下的,而是存在F:\java\2011\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\zxdy\upload这里。请问一下这是什么原因呢?该怎么解决?我的FileOutputStream是这样定义的FileOutputStream fos = new FileOutputStream(ServletActionContext.getServletContext().getRealPath(&/upload&)+&/&+docFileName);&&&&&&
&re: 在Struts 2中实现文件上传
&#64;2少包有冲突&&&&&&
&re: 在Struts 2中实现文件上传
写的不错。唯一缺点是粘贴后要把所有空格去掉就ok了&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
写的非常好,正好解决的我的问题,我也是刚开始学struts2,上传一直都报空指针,但是刷新以下后又正常了。后来自己和你的代码核对,发现在setter和getter还有web.xml配置上有出入,然后按照你的修改后,就不会再报空指针错误了,这里特别推荐!!也非常的详细!!&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
不知道为什么,我上传可以成功,但其他文本框的值都取不出来,不知道为什么
&&&&&&
&re: 在Struts 2中实现文件上传[未登录]
&#64;referee
手动文件夹建在哪个目录下啊、&&&&&&
&re: 在Struts 2中实现文件上传
为什么我能跳到成功页面但是图片不会显示
&&&&&&
&re: 在Struts 2中实现文件上传
&#64;果果
在webroot下面一个文件夹&&&&&&
2008年11月
262728293031123456789101112131415161718192021222324252627282930123456
留言簿(252)
一个如我一般对IT执着的好朋友
阅读排行榜
评论排行榜

我要回帖

更多关于 点击跳转 的文章

 

随机推荐