第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
5.4 接口开发-根据id删除附件
第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令
第2-1-3章 docker-compose安装FastDFS,实现文件存储服务
第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料
5.4.1 接口文档
根据id删除附件接口要完成的操作主要有两个:
- 将客户端上传的文件从指定存储位置(具体存储位置由配置文件配置的存储策略确定)删除
- 将文件信息从数据库的pd_attachment表中删除
根据id删除附件功能的接口文档如下:

5.4.2 代码实现
第一步:在AttachmentController中提供文件删除的方法
@ApiOperation(value = "删除文件", notes = "删除文件")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids[]", value = "文件ids", dataType = "array", paramType = "query"),
})
@DeleteMapping
public R<Boolean> remove(@RequestParam(value = "ids[]") Long[] ids) {
attachmentService.remove(ids);
return success(true);
}
第二步:在AttachmentService接口中扩展remove方法
/**
* 删除附件
*
* @param ids
*/
void remove(Long[] ids);
第三步:在AttachmentServiceImpl实现类中实现remove方法
/**
*根据id删除附件
* @param ids
*/
@Override
public void remove(Long[] ids) {
if (ArrayUtils.isEmpty(ids)) {
return;
}
//查询数据库
List<Attachment> list = super.list(Wrappers.<Attachment>lambdaQuery().
in(Attachment::getId, ids));
if (list.isEmpty()) {
return;
}
//删除数据库中的记录
super.removeByIds(Arrays.asList(ids));
//对象格式处理
List<FileDeleteDO> fileDeleteDOList =
list.stream().map((fi) -> FileDeleteDO.builder()
.relativePath(fi.getRelativePath()) //文件在服务器的相对路径
.fileName(fi.getFilename()) //唯一文件名
.group(fi.getGroup()) //fastDFS返回的组 用于FastDFS
.path(fi.getPath()) //fastdfs 的路径
.build())
.collect(Collectors.toList());
//删除文件
fileStrategy.delete(fileDeleteDOList);
}
5.4.3 接口测试
第一步:启动Nacos配置中心
第二步:启动Nginx服务
第三步:启动文件服务
第四步:访问接口文档,地址为http://localhost:8765/doc.html

可以看到pd_attachment表中对应的记录已经删除掉了,对应的文件也已经被删除掉了。
5.4.4 测试ALI和FAST_DFS以及MINIO上传和删除的接口
注:可以修改Nacos中的pd-file-server.yml配置文件,将存储策略改为ALI和FAST_DFS以及MINIO来测试文件的存储策略是否发生了变化。
5.4.4.1 阿里云OSS上传和删除
- 上传

- 删除

- 删除后就资源就无法访问了

5.4.4.2 FastDFS上传和删除
上传

查看资源

删除操作后再查看

5.4.4.3 Minio上传和删除
- 上传

- 查看minio中资源存储情况

- 查看图片

- 删除图片

- 删除成功,资源已经不存在

5.5 接口开发-根据业务类型/业务id删除附件
5.5.1 接口文档
根据业务类型/业务id删除附件接口要完成的操作主要有两个:
- 将客户端上传的文件从指定存储位置(具体存储位置由配置文件配置的存储策略确定)删除
- 将文件信息从数据库的pd_attachment表中删除
根据业务类型/业务id删除附件功能的接口文档如下:


5.5.2 代码实现
第一步:在AttachmentController中提供根据业务类型/业务id删除文件的方法
@ApiOperation(value = "根据业务类型或业务id删除文件",
notes = "根据业务类型或业务id删除文件")
@DeleteMapping(value = "/biz")
public R<Boolean> removeByBizIdAndBizType(
@RequestBody
AttachmentRemoveDTO dto) {
attachmentService.removeByBizIdAndBizType(dto.getBizId(),
dto.getBizType());
return success(true);
}
第二步:在AttachmentService接口中扩展removeByBizIdAndBizType方法
/**
* 根据业务id/业务类型删除附件
*
* @param bizId
* @param bizType
*/
void removeByBizIdAndBizType(String bizId, String bizType);
第三步:在AttachmentServiceImpl实现类中实现removeByBizIdAndBizType方法
/**
* 根据业务id和业务类型删除附件
*
* @param bizId
* @param bizType
*/
@Override
public void removeByBizIdAndBizType(String bizId, String bizType) {
//根据业务类和业务id查询数据库
List<Attachment> list = super.list(
Wraps.<Attachment>lbQ()
.eq(Attachment::getBizId, bizId)
.eq(Attachment::getBizType, bizType));
if (list.isEmpty()) {
return;
}
//根据id删除文件
remove(list.stream().mapToLong(
Attachment::getId).boxed().toArray(Long[]::new));
}
5.5.3 接口测试
第一步:启动Nacos配置中心
第二步:启动Nginx服务
第三步:启动文件服务
第四步:访问接口文档,地址为http://localhost:8765/doc.html

可以看到pd_attachment表中对应的记录已经删除掉了,对应的文件也已经被删除掉了。
第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令
第2-1-3章 docker-compose安装FastDFS,实现文件存储服务
第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料
第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss的更多相关文章
- 第2-3-1章 文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
目录 文件存储服务 1. 需求背景 2. 核心功能 3. 存储策略 3.1 本地存储 3.2 FastDFS存储 3.3 云存储 3.4 minio 4. 技术设计 文件存储服务 全套代码及资料全部完 ...
- 第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料
目录 1. MinIO介绍 2. MinIO应用场景 2.1 单主机单硬盘模式 2.2 单主机多硬盘模式 2.3 多主机多硬盘分布式 3. MinIO特点 4. 存储机制 5. docker安装Min ...
- 第2-1-4章 SpringBoot整合FastDFS文件存储服务
目录 5 SpringBoot整合 5.1 操作步骤 5.2 项目依赖 5.3 客户端开发 5.3.1 FastDFS配置 5.3.2 FastDFS配置类 5.3.3 文件工具类 5.3.4 文件上 ...
- 第2-1-3章 docker-compose安装FastDFS,实现文件存储服务
目录 4 docker-compose安装FastDFS 4.1 docker-compose-fastdfs.yml 4.2 nginx.conf 4.3 storage.conf 4.4 测试 4 ...
- 利用ThinkPHP自带的七牛云驱动上传文件到七牛云以及删除七牛云文件方法
一.准备工作 1.注册七牛云账号 2.选择对象储存->创建空间->设置为公开 3.在config配置文件中添加以下代码 'UPLOAD_FILE_QINIU' => array ( ...
- xp下删除windows7,无法删除windows7文件夹,无法删除windows7文件,双系统卸载,取得文件权限
http://blog.csdn.net/lanmanck/article/details/5722050 ---------------------------------------------- ...
- windows下自动删除n天前的文件
使用windows2003下的内置命令forfiles配合计划任务可以实现自动删除n天前的文件. windows2003中设定自动执行的计划任务很简单. 一.脚本编写 forfiles命令用法: Fo ...
- java后台简单从阿里云上传下载文件并通知前端以附件的形式保存
一. 首先开通阿里的OSS 服务 创建一个存储空间在新建一个Bucket 在你新建的bucket有所需的id和key 获取外网访问地址或者是内网 看个人需求 我使用的是外网(内网没用过 估计是部署到阿 ...
- 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
第48章 MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 第48章 MDK的编译过程及文件类型全解
Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...
随机推荐
- zabbix_agentd断断续续端无法访问问题记录
问题现象: zabbix监控上出现zabbix_agentd无法访问,但是实际上zabbix_agentd是存活状态 每隔一段时间就会出现这样的情况 问题原因 zabbix_agentd端任务较多,活 ...
- webpack打包优化点
目录 1. noParse 2. 包含和排除目录 3. IgnorePlugin 4. happypack 5. DllPlugin动态链接库 6. 热更新 7. 开发环境 tree-shaking ...
- 003-simonyanVeryDeepConvolutional2015(VGG)
Very Deep Convolutional Networks for Large-Scale Image Recognition #paper 1. paper-info 1.1 Metadata ...
- 理解virt、res、shr之间的关系(linux系统篇)
前言 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题--你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过top命令查看进程占用了多少内存.这里我们可 ...
- 如何搭建安全的 CI/CD 管道?
Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 &q ...
- 如何在JavaScript中使用高阶函数
将另一个函数作为参数的函数,或者定义一个函数作为返回值的函数,被称为高阶函数. JavaScript可以接受高阶函数.这种处理高阶函数的能力以及其他特点,使JavaScript成为非常适合函数式编程的 ...
- 4、StringBuilder类
StringBuilder类 一个可变的字符序列,此类提供一个与StringBuffer 兼容的 API,但不保证同步(StringBuilder 不是线程安全). 该类被设计用作 StringBuf ...
- Elasticsearch:使用 IP 过滤器限制连接
文章转载自:https://elasticstack.blog.csdn.net/article/details/107154165
- 重新安装kuboard后,原先配置的CI/CD命令都没了,需要重新创建
背景介绍 使用如下命令创建的kuboard服务,上一层用nginx设置代理,用域名访问使用的 docker run -d \ --restart=always \ --name=kuboard \ - ...
- k8s-ingress配置websocket支持
具体来说,使用的ingress-controller不一样,有关的设置也不太一样 Kubernetes Ingress Controller (k8s官方) 参考 http://github.com/ ...