【问题标题】:Upload image and display in browser in spring webflow在spring webflow中上传图像并在浏览器中显示
【发布时间】:2014-03-18 01:34:11
【问题描述】:

我需要从文件系统中获取图像并在浏览器中显示它。到目前为止我尝试过的代码如下所示:

.jsp 代码:

<formspring:form enctype="multipart/form-data" modelAttribute="onlinePurchase">
   Please select a file to upload : <input type="file" name="multipartFileUpload" id="multipartFileUpload" />
   <div class="submit">
        <input type="submit" id="upload" name="_eventId_upload"
            value="Upload Image" />
        </div>
 </formspring:form>

控制器代码:

  public void saveImage(OnlinePurchase onlinepurchase,
        MultipartFile multipartFile) {

    try {
        onlinepurchase.setContent(multipartFile.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
    onlinepurchase.setContentSize(new Long(multipartFile.getSize())
            .intValue());
    onlinepurchase.setContentType(multipartFile.getContentType());
    onlinepurchase.setFilename(multipartFile.getOriginalFilename());

}

flow.xml 代码:

 <view-state id="onlinePurchaseStep1" view="onlinepurchase/onlinepurchaserequest-step-1"
    model="onlinePurchase">

    <on-render>
        <evaluate expression="oPAction.initialize" />
    </on-render>
    <transition on="submit" to="onlinePurchaseStep1" validate="false">
        <evaluate expression="oPAction.cropImage" />
    </transition>
    <transition on="upload" to="onlinePurchaseStep1" validate="false">
        <evaluate
    expression="oPAction.saveImage(onlinePurchase,requestParameters.multipartFileUpload)"
            result="" result-type="" />
    </transition>
    <transition on="success" to="onlinePurchaseStep2">
        <evaluate expression="oPAction.addMedia" />
    </transition>

    <transition on="cancel" to="login" validate="false" />
</view-state>

问题是 saveImage(OnlinePurchase onlinepurchase, String multipartFile) 方法没有被调用。 任何建议表示赞赏。

【问题讨论】:

  • 没有可用的堆栈跟踪?

标签: spring jakarta-ee spring-mvc spring-webflow


【解决方案1】:

你需要一个 MultipartResolver : 在 springs 的 webmvc xml 配置文件中添加这一行。

   <bean id ="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

请注意,CommonsMultipartResolver 使用 org.apache.commons.io 包中的类,因此您可能需要在类路径中添加 commons-io.jar。 如果您的项目是 maven,您可以在 pom 中添加以下依赖项:

     <dependency> 
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId> 
        <version>a valid version</version> <!-- 2.4 worked for me -->
     </dependency> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2021-11-25
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多