@RestEndpoint
public class ImageController {
@Autowired
GridFsTemplate mTemplate;
@RequestMapping(value = "images",method = RequestMethod.POST)
public @ResponseBody String testPhoto(@RequestParam String name,@RequestParam String directory,@RequestParam MultipartFile file) throws IOException {
if(!file.isEmpty()){
final byte[] bytes = file.getBytes();
InputStream inputStream = new ByteArrayInputStream(bytes);
mTemplate.store(inputStream,"name");
return "uploaded photo";
}
return "Failed";
}
}
@RestEndpoint注释是:
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
public @interface RestEndpoint
{
String value() default "";
}
我的ContextCOnfiguration类是:
@Configuration
@EnableWebMvc
@ComponentScan(
basePackages = "com.questter.site",useDefaultFilters = false,includeFilters =
@ComponentScan.Filter({RestEndpoint.class,RestEndpointAdvice.class})
)
public class RestServletContextConfiguration extends WebMvcConfigurerAdapter {
@Bean
public CommonsMultipartResolver multiPartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
return resolver;
}
...
}
– – 更新 – –
web.xml文件:
– – 更新 – –
public class Bootstrap implements WebApplicationInitializer
{
@Override
public void onStartup(ServletContext container) throws ServletException
{
container.getServletRegistration("default").addMapping("/resource/*");
AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(RootContextConfiguration.class);
container.addListener(new ContextLoaderListener(rootContext));
AnnotationConfigWebApplicationContext webContext =
new AnnotationConfigWebApplicationContext();
webContext.register(WebServletContextConfiguration.class);
ServletRegistration.Dynamic dispatcher = container.addServlet(
"springWebDispatcher",new DispatcherServlet(webContext)
);
dispatcher.setLoadOnStartup(1);
dispatcher.setMultipartConfig(new MultipartConfigElement(
null,20_971_520L,41_943_040L,512_000
));
dispatcher.addMapping("/");
AnnotationConfigWebApplicationContext restContext =
new AnnotationConfigWebApplicationContext();
restContext.register(RestServletContextConfiguration.class);
DispatcherServlet servlet = new DispatcherServlet(restContext);
servlet.setDispatchOptionsRequest(true);
dispatcher = container.addServlet(
"springRestDispatcher",servlet
);
dispatcher.setLoadOnStartup(2);
dispatcher.addMapping("/rest/*");
rootContext.refresh();
DbBootstrap dbBootstrap = rootContext.getBean(DbBootstrap.class);
dbBootstrap.init();
}
}
当执行一个帖子请求(使用邮递员)时,我得到:
HTTP Status 500 - Request processing Failed; nested exception is java.lang.IllegalArgumentException:Expected MultipartHttpServletRequest: is a MultipartResolver configured
我已经在stackoverflow上查看了一些类似的问题,但没有一个答案有帮助
我.
Spring版本是:4.0.4
任何帮助将不胜感激(当然竖起大拇指).
谢谢
最佳答案