用springboot写一个头像上传api
时间: 2023-05-25 09:06:31 浏览: 110
好的,以下是一个简单的头像上传api的实现示例:
1. 首先,我们需要添加相关依赖到pom.xml文件中:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
```
2. 编写头像上传接口:
```
@RestController
public class AvatarUploadController {
@Value("${avatar.path}")
private String avatarPath;
@PostMapping("/avatar")
public String uploadAvatar(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return "文件不能为空";
}
String fileName = file.getOriginalFilename();
File dest = new File(avatarPath + fileName);
try {
file.transferTo(dest);
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败";
}
}
}
```
3. 配置上传文件路径:
在application.properties文件中添加以下配置:
```
avatar.path=/data/avatar/
```
4. 编写异常处理器:
```
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler({MethodArgumentNotValidException.class})
@ResponseBody
public String handleValidationException(MethodArgumentNotValidException e) {
List<ObjectError> errors = e.getBindingResult().getAllErrors();
StringBuilder errorMsg = new StringBuilder();
for (ObjectError error : errors) {
errorMsg.append(error.getDefaultMessage()).append(";");
}
return errorMsg.toString();
}
@ExceptionHandler(MultipartException.class)
@ResponseBody
public String handleMultipartException(MultipartException e) {
return e.getMessage();
}
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleException(Exception e) {
return e.getMessage();
}
}
```
其中,MethodArgumentNotValidException是用于处理请求参数校验异常的,MultipartException是用于处理文件上传异常的。
5. 测试:
使用Postman或其他工具发送POST请求,将头像作为file参数上传。
以上就是一个简单的头像上传api的实现示例,可以根据实际需求进行修改和优化。
阅读全文