1.下是在前台选好要上传的
<input type="file" accept="image/*"
class="layui-input" tname="icon_file" placeholder="修改头像" id="icon"/>
2.表单提交,后台接收
@PostMapping("add")
@ResponseBody
public AjaxResult add(User user, MultipartFile icon_file){
String name=icon_file.getOriginalFilename();//文件名
System.out.println(name);
//写好的工具类,名字随机,保存在当前目录
String file_path = FileUtil.uploadFile(icon_file);
user.setIcon(file_path);
return toAjax(userService.save(user));
}
3.前台显示
<td ><img th:src="${user.icon}"></td>
工具类:
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
/**
* @ClassName: FileUtil
* @Description: 文件上传工具类
* @Version 1.0
**/
public class FileUtil {
private final static Logger logger = LoggerFactory.getLogger(FileUtil.class);
/**
* 文件上传路径前缀
*/
public static String uploadSuffixPath;
/**
* 本地磁盘目录
*/
public static String uploadLocalPath;
/**
* @Title: uploadFile
* @Description: 单文件上传到本地磁盘
* @param: multipartFile
* @return: java.lang.String
* @throws:
*/
public static String uploadFile(MultipartFile multipartFile){
if(multipartFile == null){
return null;
}
//获取文件相对路径
String fileName = getUploadFileName(multipartFile.getOriginalFilename());
String dateDir = DateUtil.format(null,DateUtil.PATTERN_yyyyMMdd);
File destFileDir = new File(uploadLocalPath + File.separator + dateDir);
if(!destFileDir.exists()){
destFileDir.mkdirs();
}
try {
File destFile = new File(destFileDir.getAbsoluteFile()+File.separator+fileName);
multipartFile.transferTo(destFile);
logger.info("文件【"+multipartFile.getOriginalFilename()+"】上传成功");
return uploadSuffixPath + "/" + dateDir+"/"+fileName;
} catch (IOException e) {
logger.error("文件上传异常:"+multipartFile.getOriginalFilename(),e);
return null;
}
}
/**
* @Title: getUploadFilePath
* @Description: 获取上传后的文件相对路径 --数据库存储该路径
* @param: fileName
* @return: java.lang.String
* @throws:
*/
public static String getUploadFileName(String fileName){
return new StringBuilder()
.append(DateUtil.format(null, DateUtil.PATTERN_yyyyMMddHHmmssSSS))
.append("_").append(Utility.getRandomStrByNum(6))
.append(".").append(FilenameUtils.getExtension(fileName))
.toString();
}
/**
* @Title: isFileBySuffix
* @Description: 通过后缀名判断是否是某种文件
* @param: fileName 文件名称
* @param: suffix 后缀名
* @return: boolean
* @throws:
*/
public static boolean isFileBySuffix(String fileName,String suffix){
if(StringUtils.isNoneBlank(fileName) && StringUtils.isNoneBlank(suffix)){
return fileName.endsWith(suffix.toLowerCase()) || fileName.endsWith(suffix.toUpperCase());
}
return false;
}
}