【问题标题】:Working with MultipartFile in Spring MVC 5 always return null在 Spring MVC 5 中使用 MultipartFile 总是返回 null
【发布时间】:2019-05-03 15:42:17
【问题描述】:

我无法将图像上传到服务器中的特定目录。 multipartfile 变量总是为空,这里是我的代码

配置 Bean

 @Bean
public CommonsMultipartResolver multipartResolver()
{
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    return resolver;
}

领域类

private MultipartFile producImage;

public MultipartFile getProductImage() {
    return producImage;
}

public void setProducImage(MultipartFile producImage) {
    this.producImage = producImage;
}

控制器类

   @RequestMapping(value = "/products/add", method = RequestMethod.POST)
public String processAddNewProductForm(@ModelAttribute("newProduct") Product newProduct, BindingResult result, HttpServletRequest request)
{
    String[] suppressedFields = result.getSuppressedFields();
    if(suppressedFields.length > 0)
    {
        throw new RuntimeException("Attempting to bind disallowed fields " + StringUtils.arrayToCommaDelimitedString(suppressedFields));
    }
    // productImage always receive null value !!!!!!
    MultipartFile productImage = newProduct.getProductImage();
    String rootDirectory = request.getSession().getServletContext().getRealPath("/");
    if(productImage != null && !productImage.isEmpty())
    {
        try
        {
            productImage.transferTo(new File(rootDirectory + "resources\\images\\" + newProduct.getProductId() + ".png"));
        }
        catch(Exception ex)
        {
            throw new RuntimeException("Product Image Saving failed", ex);
        }
    }

    productService.addProduct(newProduct);
    return "redirect:/market/products";
}

前端:addproduct.jsp

  <form:form method="POST" modelAttribute="newProduct" class="form-horizontal" enctype="multipart/form-data">
            <fieldset>
                <legend>Add New Product</legend>
                <div class="form-group">
                    <label class="control-label col-lg-2" for="productImage">
                        <spring:message code="addProduct.form.productImage.label" />
                    </label>
                    <div class="col-lg-10">
                        <form:input id="productImage" path="productImage" type="file" class="form:input-large" />
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-offset-2 col-lg-10">
                        <input type="submit" id="btnAdd" class="btn btn-primary" value ="Add"/>
                    </div>
                </div>
            </fieldset>
        </form:form>

我不知道为什么不工作。提前感谢您的帮助

【问题讨论】:

    标签: java spring


    【解决方案1】:

    你必须初始化一个 MultipartFilter 类型的 bean 并设置多部分解析器,让 Spring 能够处理包含文件的请求:

    @Bean
    public MultipartFilter multipartFilter(){
    
        MultipartFilter multipartFilter = new MultipartFilter();
        multipartFilter.setMultipartResolverBeanName("multipartResolver");
        return multipartFilter;
    }
    

    【讨论】:

    • 你在spring上下文配置中添加bean,瞧,问题解决了!
    • 我添加了这个 bean,不幸的是,没有发生。还是不行。
    • 抱歉 Salar Ahmadi,您的解决方案运行良好。感谢您的帮助。
    猜你喜欢
    • 2016-04-08
    • 2019-09-17
    • 2012-01-23
    • 2019-01-20
    • 2017-08-31
    • 2016-11-03
    • 2014-06-29
    • 2013-11-27
    • 1970-01-01
    相关资源
    最近更新 更多