关于 spring boot 文件的上传
首先创建一个上传工具类
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadUtil {
public static Map<String,Object> uploadApk(MultipartFile myfiles, HttpServletRequest request,HttpServletResponse response)
{
Map<String, Object> resMap = new HashMap<String, Object>();
if(myfiles.getSize()>102410245){
resMap.put(“code”, 500);
resMap.put(“msg”, “文件过大,请上传5M以内的图片”);
System.out.println(“文件上传失败”);
return resMap;
}
String path = request.getContextPath();
String basePath = request.getScheme() + “?/” + request.getServerName() + “:” + request.getServerPort() + path;
Date dt = new Date();
Long time = dt.getTime();
if (myfiles != null) {
String realPath =“d://uploadFiles//”;
if (myfiles.isEmpty()) {
// 未选择文件
resMap.put(“code”, 400);
resMap.put(“msg”, “未选择文件”);
}else{
String originalFilename = time.toString().substring(time.toString().length() - 8,
time.toString().length());
originalFilename = originalFilename.concat(".");
originalFilename = originalFilename.concat(myfiles.getOriginalFilename().toString().substring(myfiles.getOriginalFilename().toString().indexOf(".") + 1));
try {
// 这里使用Apache的FileUtils方法来进行保存
FileUtils.copyInputStreamToFile(myfiles.getInputStream(), new File(realPath, originalFilename));
resMap.put("code", 200);
resMap.put("msg", "上传成功");
resMap.put("filename", originalFilename);
resMap.put("path", basePath + "/static/image/"+originalFilename );
} catch (IOException e) {
resMap.put("code", 500);
System.out.println("文件上传失败");
resMap.put("msg", "文件上传失败");
e.printStackTrace();
}
}
}
return resMap;
}
}
写一个控制层
@RestController
public class FileUploadController {
@RequestMapping("/api/test")
public Map<String ,Object> test(MultipartFile myfiles, HttpServletRequest request,
HttpServletResponse response){
//Map<String,Object > resultMap =new HashMap<>();
Map<String,Object > resultMap=FileUploadUtil.uploadApk(myfiles, request, response);
ResponseResult rr=new ResponseResult();
return resultMap;
}
}
写完以上代码之后还需要配置映射关系
在application.properties 中
file.staticAccessPath=/static/image/**
#file.uploadFolder=/root/uploadFiles/
file.uploadFolder=d://uploadFiles/
spring.mvc.static-path-pattern=/webapp/**
对于跨域访问和映射关系 需要配置WebMvcConfiger
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Value("${file.staticAccessPath}")
private String staticAccessPath;
@Value("${file.uploadFolder}")
private String uploadFolder;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**").allowedHeaders("*").allowedMethods("*").allowedOrigins("*");
}
}
上述工作完成之后就可以进行测试