相关疑难解决方法(0)

如何在spring4中配置"CommonsMultipartResolver"而不用xml来上传文件

我使用xml配置spring4工作得很好.像这样:

<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
    p:defaultEncoding="utf-8" >
    <!-- one of the properties available; the maximum file size in bytes -->  
    <!-- <property name="maxUploadSize" value="40000000" /> -->  
</bean>
Run Code Online (Sandbox Code Playgroud)

当我配置spring4而没有xml.like时:

@Configuration
@ComponentScan({ "common.user", "service" })
@EnableWebMvc
public class SpringMVCConfig {

@Bean
public ViewResolver createInternalResourceViewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setContentType("text/html");
    viewResolver.setPrefix("/view/");
    //viewResolver.setSuffix(".jsp");
    return viewResolver;
}

@Bean
public DefaultServletHttpRequestHandler createDefaultServletHttpRequestHandler() {
    return new DefaultServletHttpRequestHandler();
}


@Bean
public CommonsMultipartResolver createMultipartResolver() {
    CommonsMultipartResolver resolver=new CommonsMultipartResolver();
    resolver.setDefaultEncoding("utf-8");
    return resolver;
}
Run Code Online (Sandbox Code Playgroud)

}

它引发了一个异常:

 ?? 30, 2014 …
Run Code Online (Sandbox Code Playgroud)

java file spring-mvc uploading spring-4

23
推荐指数
1
解决办法
4万
查看次数

Spring MVC框架:使用PUT方法的MultipartResolver

我正在使用框架3.2.3.RELEASE开发一个spring mvc应用程序

在我的应用程序中,我使用StandardServletMultipartResolver处理Multipart,但是使用apache commons-fileupload 1.3,事情是相同的.

我想知道为什么isMultipart方法的实现只考虑POST方法,而不考虑PUT方法.如果我想更新实体和相关文件,我必须使用POST.

查看org.springframework.web.multipart.support.Standard ServletMultipartResolver:

public boolean isMultipart(HttpServletRequest request) {
    // Same check as in Commons FileUpload...
    if (!"post".equals(request.getMethod().toLowerCase()) ) {
        return false;
    }
    String contentType = request.getContentType();
    return (contentType != null && contentType.toLowerCase().startsWith("multipart/"));
}
Run Code Online (Sandbox Code Playgroud)

而在org.apache.commons.fileupload.servlet.ServletFileU pload我有:

public static final boolean isMultipartContent(HttpServletRequest request) {
    if (!POST_METHOD.equalsIgnoreCase(request.getMethod() )) {
        return false;
    }
    return FileUploadBase.isMultipartContent(new ServletRequestContext(request));
}
Run Code Online (Sandbox Code Playgroud)

不是一件至关重要的事情,事实上只是使用PUT工作的POST方法.但我想承认为什么PUT不被考虑在内!

谢谢你回复Marco

spring multipartform-data spring-mvc apache-commons-fileupload

8
推荐指数
1
解决办法
3456
查看次数