1、在application.yml文件中设置存储文件夹地址
upload:
path: E:\upload\
2、配置映射路径
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//其中image表示访问的前缀。"file:E:/upload/"是文件真实的存储路径
registry.addResourceHandler("/upload/**").addResourceLocations("file:E:/upload/");
}
}
3、上传文件
上传文件类
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${upload.path}")
private String filePath;
//根据日期生成路径 2022/1/15/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/");
/**
* 上传文件
*/
@PostMapping("/upload")
public R<String> uploadFile(@RequestBody MultipartFile file) {
if (file == null) return R.error("文件不能为空");
//1、获取上传文件的名字
String originalFilename = file.getOriginalFilename();
//2、对原始文件名进行判断
if (!originalFilename.endsWith(".jpg") && !originalFilename.endsWith(".png")) {
return R.error("上传文件类型错误,请上传png或jpg类型的图片");
}
//3、使用工具类,防止重复 返回:af66cdc12867443787362575b92ca514.jpg
String fileName = PathUtils.generateFilePath(originalFilename);
//4、创建存储日期的文件夹
String datePath = sdf.format(new Date());
//5、创建目录
File dir = new File(filePath + datePath, fileName);
//6、如果不存在就创建该文件夹
if (!dir.exists()) {
dir.mkdirs();
}
try {
//7、将文件转存到指定文件夹
file.transferTo(dir);
} catch (Exception e) {
return R.error(e.getMessage());
}
return R.success(datePath + fileName);
}
}
PathUtils类
public class PathUtils {
public static String generateFilePath(String fileName){
//uuid作为文件名
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//后缀和文件后缀一致,获取文件.jpg
int index = fileName.lastIndexOf(".");
// test.jpg -> .jpg
String fileType = fileName.substring(index);
return new StringBuilder().append(uuid).append(fileType).toString();
}
}
结果返回类R
@Data
public class R<T> implements Serializable {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
private Map map = new HashMap(); //动态数据
public static <T> R<T> success(T object) {
R<T> r = new R<T>();
r.data = object;
r.code = 1;
return r;
}
public static <T> R<T> error(String msg) {
R r = new R();
r.msg = msg;
r.code = 0;
return r;
}
public R<T> add(String key, Object value) {
this.map.put(key, value);
return this;
}
}
标签:文件,return,SpringBoot,upload,传到,文件夹,new,public,String From: https://www.cnblogs.com/huxiaoan1/p/17401549.html时间:2023-05-15 中午