Struts - 上传文件

时间:2009-10-01 02:15:43

标签: java spring file-upload struts

我在使用spring webflow 1.0和struts 1.3上传文件时遇到问题。

jsp是这样的:

<html:form action="/flowAction" method="post" enctype="multipart/form-data">
    <!-- snip -->
    <html:file property="file" name="attachDocumentsForm" size="50"/>
    <!-- snip -->
</html:form>

表格是这样的:

public class AttachDocumentsForm extends SpringBindingActionForm {
    // note, SpringBindingActionForm extends struts' ActionForm
    private FormFile file;
    //snip
}

现在,我的问题是,当我提交表单时,file字段始终为null。表单上的其他字段填写正确,如果我挖掘RequestContext,我会发现文件深埋在那里的一些数据结构中。

以下是我可以从附件中获得的可怕的丑陋方式:

// 'context' is the RequestContext
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext();
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm");
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file");

我注意到我的表单上的MultipartRequestHandlernull,我怀疑这可能是问题的一部分,但我尝试使用{{1}的实例填充它无济于事。

我需要做些什么才能正确填充CommonsMultipartRequestHandler字段?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

FormFileActionForm引用的那个)中添加名为attachDocumentsForm类型的文件的字段,以及访问者方法。

可以通过拨打form.getFile()来访问上传的文件。

我希望这有帮助!