maven导包,spring的包和下面这两个包 2.4 1.2.1 commons-fileupload commons-fileupload ${fileupload.version} commons-io commons-io ${commons.io.version} javaConfig配置springMVC package com.amiu.java_config;import org.springframew
javaConfig配置springMVC2.4 1.2.1 commons-fileupload commons-fileupload${fileupload.version} commons-io commons-io${commons.io.version}
package com.amiu.java_config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class
[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class[]{MvcConfig.class};
}
@Override
protected Class
[] getServletConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[]{"/"};
}
}
MvcConfig
package com.amiu.java_config;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.FileSystemResource;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
@ComponentScan("com.amiu")
public class MvcConfig extends WebMvcConfigurerAdapter{
private static final Logger logger = Logger.getLogger(MvcConfig.class);
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver commonsMultipart = new CommonsMultipartResolver();
commonsMultipart.setDefaultEncoding("UTF-8");//设置字符编码
//commonsMultipart.setMaxUploadSizePerFile(5*1024*1024);//单个文件最大上传限制
commonsMultipart.setMaxUploadSize(20*1024*1024);//设置最大上传大小
try {
//设置临时路径
commonsMultipart.setUploadTempDir(new FileSystemResource("/tempImg"));
} catch (IOException e) {
logger.error(e.getMessage());
e.printStackTrace();
}
return commonsMultipart;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
spring controller
package com.amiu.upload;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@RestController
public class ImgController {
private static final Logger logger = Logger.getLogger(ImgController.class);
//上传最大限制
private long UPLOAD_FILE_MAX_SIZE = 5*1024*1024;
private List
SUPPORT_IAMGE_SUFFIXList;
//被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,
//并且只会被服务器调用一次,类似于Serclet的inti()方法
@PostConstruct
void init(){
SUPPORT_IAMGE_SUFFIXList =
new ArrayList
(); SUPPORT_IAMGE_SUFFIXList.add("jpg"); SUPPORT_IAMGE_SUFFIXList.add("png"); SUPPORT_IAMGE_SUFFIXList.add("jpeg"); SUPPORT_IAMGE_SUFFIXList.add("pdf"); } @RequestMapping(value = "/img") public String uploadPic(MultipartHttpServletRequest request) { System.out.println("in imageUpload"); //只获取image MultipartFile image = request.getFile("image"); if(image == null) return "choice file please"; if(image.getSize() > UPLOAD_FILE_MAX_SIZE) return "file to big,it must smaller than 5M"; String orgFileName = image.getOriginalFilename(); //文件格式后缀 String fileSuffix = orgFileName.substring(orgFileName.indexOf('.')+1).toLowerCase(); //判断文件格式 if(!SUPPORT_IAMGE_SUFFIXList.contains(fileSuffix)) return "unsupport file format"; String path = "E:/image/"; String fileName = new Date().getTime()+fileSuffix; File localFile = new File(path+fileName); try { //spring提供的上传方法 image.transferTo(localFile); } catch (IllegalStateException | IOException e) { logger.error(e.getMessage()); System.out.println(e.getMessage()); e.printStackTrace(); } return "success: "+fileName; } }
页面
