首页 > 解决方案 > 使用 Spring Web Flow 上传文件

问题描述

我已经搜索并阅读了多个关于file upload使用的答案,Spring Web Flow但似乎都给出了相同的结果。因此发帖。

public class FileUploadForm {
    private transient MultipartFile file;

    //Additional fields
}

流动

<view-state id="start" model="fileUploadForm">
    <transition on="submit" to="submit"/>
    <transition on="cancel" to="cancel"/>
</view-state>

<action-state id="submit">
    <evaluate expression="someActions.review(fileUploadForm)" />
    <transition on="success" to="home"/>
</action-state>

JSP

<form:form modelAttribute="fileUploadForm" enctype="multipart/form-data"> <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/> <form:label path="file">Upload File</form:label> <form:input type="file" path="file"/> <button name="_eventId_upload">Upload Button</button> </form:form>

XML

<!--<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">-->
    <!--<property name="maxUploadSize" value="100000"/>-->
<!--</bean>-->

<bean id="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="100000" />
</bean>

爪哇

public String review(FileUploadForm fileUploadForm) {
    LOG.info("{}", fileUploadForm.getFile().getContentType());
    return "success";
}

LOG.info getFile为空。我确实在表格中填写了其他字段,但没有填写文件字段。

有人可以指出我正确的方向。使用Webflow 2.5.1

标签: spring-mvcspring-webflow-2

解决方案


尝试使用常规输入文件:

<input type="file" name="file" id="file"/>

[编辑] 要完整,我的工作代码也使用此表单标记:

<form:form modelAttribute="fileUploadForm" action="${flowExecutionUrl}&${_csrf.parameterName}=${_csrf.token}" enctype="multipart/form-data">

和这种类型的提交按钮:

<input type="submit" id="upload" name="_eventId_upload" value="Upload"></span>

推荐阅读