files:
upload:
path: /www/upload/
添加映射
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Value("${files.upload.path}")
private String fileUploadPath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
/** 本地文件上传路径 */
registry.addResourceHandler("profile" + "/**").addResourceLocations("file:" + fileUploadPath );
}
}
/**
* 图片上传接口
*
* @param file 前端传递过来的文件
* @return
* @throws IOException
*/
@PostMapping("/upload")
public Result upload(@RequestParam MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
String type = FileUtil.extName(originalFilename);
String fileName = extractFilename(originalFilename);
File desc = getAbsoluteFile(fileUploadPath, fileName);
file.transferTo(desc);
String pathFileName = getPathFileName(fileUploadPath, fileName);
return new Result( Constants.CODE_200,pathFileName);
}
private final String getPathFileName(String uploadDir, String fileName) throws IOException {
int dirLastIndex = fileUploadPath.length() + 1;
String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
String pathFileName = "profile" + currentDir + "/" + fileName;
return pathFileName;
}
private final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
File desc = new File(uploadDir + File.separator + fileName);
if (!desc.getParentFile().exists()) {
desc.getParentFile().mkdirs();
}
if (!desc.exists()) {
desc.createNewFile();
}
return desc;
}
/**
* 编码文件名
*/
public final String extractFilename(String originalFilename) {
String fileName = datePath() + "/" + new Date().getTime()+ "_" + originalFilename;
return fileName;
}
public final String datePath() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}