很快,是的,你可以。然后该操作使用的配置和约定保持不变。
如果您使用
<form>
标签,那么您应该将操作属性值与映射到该操作的路径一起放置。更多关于动作映射器如何工作以及如何将路径转换到ActionMapper
界面。
在表单标签中,您应该放置
enctype="multipart/form-data"
,以便 Struts 能够将 http
请求包装到 MultipartRequestWrapper
类 并解析表单数据。然后 fileUpload
拦截器 将参数添加到 params
拦截器 所需的操作上下文,以将文件属性注入到处理上传的操作中。
input
标签的名称应与属性File
类型的名称相对应。上面的两个拦截器都使用它,最后通过 OGNL 注入对象。
如果您需要上传多个文件,那么您应该更改属性类型以能够处理对象集合。看起来像是在这个示例中完成的。
当然可以,你可以使用 HTML 标签,
<s:form action="fileUploadAction" method="post" enctype="multipart/form-data">
<input type="file" name="userImage" id="userImage"/>
</s:form>
你可以使用 struts2-inceptors 为你做这样的事情。
<interceptors>
<interceptor name="mylogging"
class="com.alw.controller.MyLoggingInterceptor">
</interceptor>
<interceptor-stack name="loggingStack">
<interceptor-ref name="mylogging" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="fileUploadAction"
class="xxx.xxx.FileUploadAction" method="filterUploadFile">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">JSP_Pagesxxx.jsp</result/>
</action>
要在您的操作类中执行业务逻辑,您需要这个。
public class FileUploadAction extends ActionSupport implements ServletRequestAware
{
private File userImage;
private String userImageContentType;
private String userImageFileName;
public String filterUploadFile()
{
if(UserImageFileName()!=null)
{
// perform your business logic
}
}
}