1.controller层
// 传单文件
@GetMapping("/file")
public String test1(MultipartFile files){
return file.File(files);
}
// 多张图片
@GetMapping("/files")
public List test2(MultipartFile[] files){
return file.Files(files);
}
}
2.service
这个是单文件
private static String s = "d:/img";
public static String File(MultipartFile file){
String filename = file.getOriginalFilename();
// 确定文件后缀
String dex="."+filename.substring(filename.lastIndexOf(".")+1);
// 以时间生成路径
String path = DateTimeFormatter.ofPattern("yyyy/MM/dd").format(LocalDate.now());
File file1 = new File(s,path);
// 生成这个路径
if (!file1.exists()){
file1.mkdirs();
}
String name = UUID.randomUUID()+dex;
try {
// 创建这个文件
FileOutputStream stream = new FileOutputStream(s+"/"+path+"/"+name);
// 把传来的文件写入到这个文件
stream.write(file.getBytes());
stream.close();
return s+"/"+path+"/"+name;
} catch (IOException e) {
e.printStackTrace();
}
return "错误";
多文件
public static List Files(MultipartFile[] files) {
// 以时间生成路径
List<String> list = new ArrayList<>();
String path = DateTimeFormatter.ofPattern("yyyy/MM/dd").format(LocalDate.now());
File file1 = new File(s,path);
if (!file1.exists()){
file1.mkdirs();
}
Arrays.stream(files).forEach(file -> {
String filename = file.getOriginalFilename();
String dex="."+filename.substring(filename.lastIndexOf(".")+1);
String name = UUID.randomUUID()+dex;
try {
FileOutputStream stream = new FileOutputStream(s+"/"+path+"/"+name);
stream.write(file.getBytes());
list.add(s+"/"+path+"/"+name);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
});
return list;
}
代码直接可用,可以直接扒下来用,用了给个点赞
3.使用阿里云Oss对象存储
导入阿里云依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.2</version>
</dependency>
private static final String endpoint = "oss-cn-hangzhou.aliyuncs.com";
// 这里配置你自己的阿里云密钥
private static final String accessKeyId = "";
private static final String accessKeySecret = "";
private static final String bucketName = "";
public static String ossFile(MultipartFile file) {
// 生成文件路径
String path = DateTimeFormatter.ofPattern("yyyy/MM/dd").format(LocalDate.now());
String filename = file.getOriginalFilename();
String dex="."+filename.substring(filename.lastIndexOf(".")+1);
String name = UUID.randomUUID()+dex;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
PutObjectRequest putObjectRequest = null;
try {
putObjectRequest = new PutObjectRequest(bucketName, path+name, file.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
// 关闭OSSClient。
ossClient.shutdown();
return "https://"+bucketName+"."+endpoint+"/"+path+name;
}