我正在尝试使用http://www.baeldung.com/spring-file-upload上传图像我在我的控制器中调用Spring-mvc
fileUpload
并且它进入但不上传图像。我遵循的步骤是:添加依赖项:Commons FileUpload
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
我已经通过将位置和最大大小添加到我已经拥有的内容来设置 MultipartConfigElement
public class SpringWebAppInitializer implements WebApplicationInitializer {
private String TMP_FOLDER = "C:/Users/SilviaGM/Desktop/git tfg";
private int MAX_UPLOAD_SIZE = 5 * 1024 * 1024;
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
appContext.register(ApplicationContextConfig.class);
// Dispatcher Servlet
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher",
new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
dispatcher.setInitParameter("contextClass", appContext.getClass().getName());
servletContext.addListener(new ContextLoaderListener(appContext));
// UTF8 Charactor Filter.
FilterRegistration.Dynamic fr = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
fr.setInitParameter("encoding", "UTF-8");
fr.setInitParameter("forceEncoding", "true");
fr.addMappingForUrlPatterns(null, true, "/*");
//Nuevo para subir la imagen
ServletRegistration.Dynamic appServlet = servletContext.addServlet("mvc", new DispatcherServlet(
new GenericWebApplicationContext()));
appServlet.setLoadOnStartup(1);
MultipartConfigElement multipartConfigElement = new MultipartConfigElement(TMP_FOLDER,
MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
appServlet.setMultipartConfig(multipartConfigElement);
}
}
我添加了@Bean
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
// Static Resource Config
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(31556926);
registry.addResourceHandler("/img/**").addResourceLocations("/img/").setCachePeriod(31556926);
registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(31556926);
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(100000);
return multipartResolver;
}
}
最后我将该方法添加到控制器中:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String submit(@RequestParam("file") MultipartFile file, ModelMap modelMap) {
modelMap.addAttribute("file", file);
System.out.println("Estoy aqui"); //Me muestra el valor por lo que es llamado el metodo.
return "fileUploadView";
}
我的问题是图片没有上传到目录:“C:/Users/SilviaGM/Desktop/git tfg”;我找不到问题,或者我在配置中遗漏了什么
您好关于配置部分:
最后一个参数指示文件何时将自动保存在指定位置,因此您有几种情况,您的文件未达到自动保存的最小大小
如果您打算手动执行该过程,您剩下的就是验证它不是空的,并最终以您喜欢的方式将其持久化,无论是在硬盘上,在数据库中等等......
对于这种情况,我将在硬盘驱动器上执行此操作,因为我看到了您要查找的内容,并且我将使用一个库来简化该过程,但是您可以使用任何其他方法来执行此操作。我将使用的库称为:org.apache.commons.io
现在在您的控制器中:
我还不能测试我的代码,但正如您所见,您必须决定要对文件做什么。
问候。