一 service-oss
1 FileService接口
/**
* 阿里云oss 文件删除
* @param url 文件的url地址
*/
void removeFile(String url);
2 FileService实现
/**
* 阿里云oss 文件删除
*
* @param url 文件的url地址
*/
@Override
public void removeFile(String url) {
// 读取配置信息
String endpoint = ossProperties.getEndpoint();
String keyid = ossProperties.getKeyid();
String keysecret = ossProperties.getKeysecret();
String bucketname = ossProperties.getBucketname();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);
// 删除文件。
// https://<bucketname>.<endpoint>/
String host = "https://" + bucketname + "." + endpoint + "/";
String objectName = url.substring(host.length());
ossClient.deleteObject(bucketname, objectName);
// 关闭OSSClient。
ossClient.shutdown();
}
3 FileController
/**
* 功能描述:文件删除
*
* @param url 待删除文件的url
* @return R 返回给调用者的消息
* @author cakin
* @date 2020/11/29
*/
@ApiOperation(value = "文件删除")
@DeleteMapping("remove")
public R removeFile(@ApiParam(value = "要删除的文件url路径", required = true) @RequestBody String url) {
fileService.removeFile(url);
return R.ok().message("文件删除成功");
}
二 service-edu
1 创建远程调用接口
/**
* 功能描述:远程调用OSS服务删除文件图像
*
* @author cakin
* @date 2020/11/29
* @param url 待删除的文件URL
* @return R 返回给控制器的消息
*/
@DeleteMapping("/admin/oss/file/remove")
R removeFile(@RequestBody String url);
2 调用远程方法
接口
/**
* 功能描述:根据讲师id删除图像
*
* @author cakin
* @date 2020/11/29
* @param id 讲师id
* @return boolean 是否删除成功
*/
boolean removeAvatarById(String id);
实现
/**
* 功能描述:根据讲师id删除图像
*
* @param id 讲师id
* @return boolean 是否删除成功
* @author cakin
* @date 2020/11/29
*/
@Override
public boolean removeAvatarById(String id) {
// 根据id获取讲师avatar 的 url
Teacher teacher = baseMapper.selectById(id);
if (teacher != null) {
String avatar = teacher.getAvatar();
if (!StringUtils.isEmpty(avatar)) {
R r = ossFileService.removeFile(avatar);
return r.getSuccess();
}
}
return false;
}
3 controller层
/**
* 功能描述:根据id删除讲师
*
* @author cakin
* @date 2020/11/29
* @param id 讲师id
* @return R 返回给前端的消息
*/
// @ApiOperation:定义在方法上
@ApiOperation(value = "根据ID删除讲师", notes = "根据ID删除讲师,逻辑删除")
@DeleteMapping("remove/{id}")
// @ApiParam:定义在参数上
public R removeById(@ApiParam(value = "讲师ID", required = true) @PathVariable String id) {
// 删除讲师头像
teacherService.removeAvatarById(id);
// 删除讲师
boolean result = teacherService.removeById(id);
if (result) {
return R.ok().message("删除成功");
} else {
return R.error().message("数据不存在");
}
}
三 前端
前端src/request.js修改超时时间
// 创建axios实例
const service = axios.create({
baseURL: process.env.BASE_API, // api 的 base_url
timeout: 12000 // 请求超时时间
})
四 测试
删除成功