有一个工作的Struts2Portlet环境,在portlet模式下,我无法使Struts文件上传工作。
我看得出来
我在一个精简的Spring Boot2应用程序中尝试了同样的方法,出现了与主项目相同的问题。遵循代码在
https://struts.apache.org/core-developers/file-upload.html
用于JSP和action类。创建了portlet,流工作,但动作中没有文件。
标准Sping Boot 2带有额外的pom:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.20</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Struts。xml
<package name="uploadtest" extends="struts-portlet-default" namespace="/uploadtest">
<action name="uploadtestPrepare" class="bouvet.no.fileuploadtest.action.FileUploadSubmitAction">
<result name="success">/WEB-INF/struts2/test/fileUpload.jsp</result>
</action>
<action name="uploadTestSubmit" class="bouvet.no.fileuploadtest.action.FileUploadSubmitAction">
<result name="success">/WEB-INF/struts2/test/fileUpload.jsp</result>
</action>
</package>
还有形式
<s:form action="uploadTestSubmit" method="post" enctype="multipart/form-data">
FileName: <s:property value="%{filename}"/>
<s:file name="upload" label="File" />
<s:submit/>
</s:form>
二传手
public void setUploadFileName(String filename) {
this.filename = filename;
}
这是portlet模式下的错误,还是我缺少一个关键依赖项、一个组件、版本?替代方法?
在图像中,文件是JSR168调度程序中的断点。在JSR168调度程序中服务器.断点之后运行的第一个代码
本例中的解决方案是后退一步,查看请求中存在的内容。运行portlet的CMS实际上在上传到达portlet环境之前负责上传。我发现的jakarta包装是由CMS创建的,但它不在portlet范围内。
解决方案:
public String intercept(ActionInvocation invocation) throws Exception {
final ActionContext context = invocation.getInvocationContext();
Object action = invocation.getAction();
try {
if (action instanceof FileUploadAware) {
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
// if (request instanceof MultipartRequestWrapper) {
File file = (File) request.getAttribute("upload");
((FileUploadAware) action).setFile(file);
// }
}
}catch (Exception e){
LOG.error("Exception? {}", e);
}finally {
return invocation.invoke();
}
这不是一个最终的解决方案,而是一个概念,一个拦截器,它在请求中找到一个上传属性,并将其放在FileUploadAware操作中。该属性是CMS截获并创建的本地临时文件。这对我有用,是CMS的特殊解决方案还是Portlet的通用解决方案?不知道。
我正在尝试使用struts2 fileUpload拦截器在我的web应用程序中实现文件上载过程。下面是我的代码 指数jsp struts.xml 文件上传操作。JAVA 当我在index.jsp页面中选择一个pdf文件并单击上传按钮时,它给操作类的fileUpload字段赋予了空值。 我在调试模式下执行应用程序,并给出了这个 检查它返回的内容,我得到空值。
问题内容: 问题描述:我想使用JSP创建文件上传屏幕。屏幕将允许用户在屏幕上选择多个文件,但所有文件只有一个“上传”按钮。单击上载按钮后,应在Action类中获取所有文件对象。 但是重要的是页面提交后不应刷新。在同一屏幕上还会显示其他信息,在文件上传过程中不应更改这些信息。 我的尝试:我使用了简单的struts2文件上传功能,效果很好。但是它正在刷新提交页面。我使用AJAX(JQuery)来解决此
介绍 (Introduction) FileUpload小部件包装HTML“input type ='file'”元素。 如果要将其提交到服务器,则必须将此窗口小部件与FormPanel一起使用。 Class 声明 (Class Declaration) 以下是com.google.gwt.user.client.ui.FileUpload类的声明 - public class FileUploa
使用最为广泛的Java文件上传组件,Struts本身采用这个包来处理文件上传。文档非常详细、简单易用。 JavaDoc:http://www.ostools.net/apidocs/apidoc?api=commons-fileupload
本文向大家介绍java组件fileupload文件上传demo,包括了java组件fileupload文件上传demo的使用技巧和注意事项,需要的朋友参考一下 在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去。 如:一个BBS系统,当用户使用这是系统的时候,能把本机的一些图片,文档上传到服务器上面去。然后其他用户可以去下载这些文件,那么这样的话,我们可以自己编程实现文
主要内容:创建视图文件:,创建action类:,配置文件:,错误消息:Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传。上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失。 请注意,服务器有一个安全策略可能会禁止写到目录以外的临时目录和属于web应用的目录。 在Struts中的文件上传是通过预先定义的拦截文件上传拦截器这是可通过org.apache.struts2.in