Springboot中的服务层service:
@Service
public class UploadServiceImpl implements UploadService {
private final static String rootPath = "C:/attachment/";
@Override
public List<Image> upload(MultipartFile[] multipartFiles) {
File fileDir = new File(rootPath);
if (!fileDir.exists() && !fileDir.isDirectory()) {
fileDir.mkdirs();
}
List<Image> list = new ArrayList<>();
try {
if (multipartFiles != null && multipartFiles.length > 0) {
for(int i = 0;i<multipartFiles.length;i++){
try {
//uuid生成文件名
String fileName = UUID.randomUUID().toString();
//组合完整路经
String storagePath = rootPath+fileName+getFileExtension(multipartFiles[i].getOriginalFilename());
System.out.println("上传的文件:" + multipartFiles[i].getName() + "," +
multipartFiles[i].getContentType() + "," + multipartFiles[i].getOriginalFilename()
+",保存的路径为:" + storagePath+i);
Path path = Paths.get(storagePath);
//将文件保存到本地文件夹中
Files.write(path,multipartFiles[i].getBytes());
Image image = new Image(multipartFiles[i].getOriginalFilename(),storagePath);
list.add(image);
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
//向前端返回一个图片列表
return list;
}
//获取文件的后缀
private String getFileExtension(String fileName) {
int dotIndex = fileName.lastIndexOf(".");
if (dotIndex >= 0 && dotIndex < fileName.length() - 1) {
return fileName.substring(dotIndex);
}
return "";
}
}
实体类image.java
import lombok.Data;
@Data
public class Image {
String name;
String url;
public Image(String name,String url){
this.name = name;
this.url = url;
}
}
控制层controller:
@RestController
@RequestMapping("/api/file")
public class UploadController {
@Resource
UploadService uploadService;
@RequestMapping("/upload")
Object uploadImage(@RequestParam("file") MultipartFile[] multipartFiles){
return uploadService.upload(multipartFiles);
}
}
postman测试:
本地文件夹: