三、实现fastdfs文件上传与记录文件日志

系列文章目录

一、Spring Boot 中集成 fastdfs文件上传
二、实现fastdfs文件上传与延迟删除功能的Spring Boot项目
三、实现fastdfs文件上传与记录文件日志

文章目录

  • 系列文章目录
    • 前言
      • 一、 设计文件日志类
      • 二、增加日志操作方法
    • 总结:


前言

希望实现 FastDFS文件上传的同时并记录文件日志


提示:以下是本篇文章正文内容,下面案例可供参考

一、 设计文件日志类

这段代码是一个Java实体类,用于表示文件日志信息。它包含了文件日志的各种属性,如文件ID、项目代码、原始文件名、URL、文件扩展名、文件大小、操作是否成功、错误信息等。同时,还包括了记录创建时间、更新时间、是否删除等字段。


@TableName("file_log")
@Data
public class FileLog implements Serializable,ProjectEntity {private static final long serialVersionUID = 1L;/*** id*/@TableId(type=IdType.AUTO)private Integer id;/*** project_code*/private String projectCode;/*** original_name*/private String originalName;/*** url*/private String url;/*** 文件类型,扩展名*/private String extension;/*** 文件大小,默认字节*/private Long byteSize;/*** succeed*/private Integer succeed;private Integer exist;/*** error_msg*/private String errorMsg;/*** create_time*/private Date createTime;/*** update_time*/private Date updateTime;/*** is_deleted*/private Integer isDeleted;public FileLog() {}}

二、增加日志操作方法

以下是对 FileItem 类的属性进行简要说明


// 以下是对 FileItem 类的属性进行简要说明
public class FileItem {/*** 文件唯一标识符*/private Long id;/*** 文件名*/private String name;/*** 文件URL地址*/private String url;/*** 文件大小(以字节为单位)*/private Long fileSizeByte;/*** 文件大小(以MB为单位)*/private String fileSizeMb;/*** 文件扩展名*/private String extension;/*** 文件对象*/private transient File file;
}

保存方法

private void saveLog(FileItem fileItem, String projectCode) {FileLog entity = new FileLog();entity.setProjectCode(projectCode);entity.setExtension(fileItem.getExtension());entity.setIsDeleted(YnEnum.NO.getCode());entity.setOriginalName(fileItem.getName());entity.setUrl(fileItem.getUrl());entity.setByteSize(fileItem.getFileSizeByte());entity.setCreateTime(DateKit.now());entity.setUpdateTime(DateKit.now());// 先只记录成功的,失败的,会发报警邮件entity.setSucceed(YnEnum.YES.getCode());entity.setErrorMsg("");super.save(entity);//回写fileIdfileItem.setId(Long.valueOf(entity.getId()));
}

删除文件日志方法

public void deleteLog(Long fileId) {// 根据文件ID删除文件日志信息fileLogRepository.deleteById(fileId);
}

查看文件日志明细方法

public FileLog getLogDetails(Long fileId) {// 根据文件ID查询文件日志信息return fileLogRepository.findById(fileId).orElse(null);
}

获取文件日志列表方法

public List<FileLog> getAllLogs() {// 获取所有文件日志信息列表return fileLogRepository.findAll();
}

这些方法可以根据您的具体业务逻辑和代码结构进行调整和扩展。请确保在这些方法中处理好异常情况,并根据需要添加事务管理和权限控制。

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/765136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于python+vue大学生兼职管理系统flask-django-php-nodejs

本系统在设计过程中&#xff0c;很好地发挥了该开发方式的优势&#xff0c;让实现代码有了良好的可读性&#xff0c;而且使代码的更新和维护更加的方便&#xff0c;操作简单&#xff0c;对以后的维护减少了很多麻烦。系统的顺利开发和实现&#xff0c;对于大学生兼职管理这一方…

量化交易入门(十三)Python开发-pandas

Pandas是Python中一个强大的数据分析和处理库。它提供了高性能、易用的数据结构和数据分析工具。Pandas的核心是DataFrame数据结构,可以让你高效地操作和分析结构化数据。下面我来详细介绍一下Pandas的主要功能和用法: 数据结构: Series: 一维标记的同构数据结构,类似于一维数…

技术创新与产业升级

在政府工作报告中,新兴技术如云计算、大数据、人工智能等被多次提及,这反映了政府高度重视新一代信息技术在推动经济社会发展中的重要作用。对于计算机行业而言,抓住这些新兴技术的发展机遇,推动技术创新和产业升级,将是未来发展的关键所在。 云计算作为一种新兴的计算模式,正…

485问题汇总

485问题汇总 485 通信波形没有负电压 问题描述&#xff1a;设备在没有外设的时候通信波形是正常的&#xff0c;即5V可以出来&#xff0c;在连接上设备后&#xff0c;设备的通信波形的-5V会随着设备的增多&#xff0c;电压会慢慢上升。当设备连接到24台设备后&#xff0c;485总…

MySQL下载及安装过程

MySQl 5.7 安装图解 目录 MySQl 5.7 安装图解 第一步 安装包 第二步 Mysql协议 第三步 安装前检查 第四步 安装 第五步 产品配置 第六步 安装完成 第一步 安装包 双击安装包文件 进行安装 第二步 Mysql协议 同意Mysql协议 , 选择 Server Only安装Mysql服务器即可 …

js处理base64字符串

编码 function encodeBase64(str: string): string {return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {return String.fromCharCode(parseInt(p1, 16))})) }解码 function decodeBase64(base64Str: string): string {return decodeURI…

数据结构(三)复杂度的深层次剖析

之前发布了数据结构&#xff08;一&#xff09;&#xff0c;很多同学反响不够清晰&#xff0c;那今天就发一篇对复杂度专题的博客&#xff0c;希望对大家理解复杂度提供一些帮助。 时间复杂度 我们先来一个理解一个复杂度&#xff0c;二分查找的复杂度&#xff08;之前写过二…

Ubuntu中安装VSCode的一个指令

问题描述 本来想去VSCode官网上下载软件包&#xff0c;然后双击使用Ubuntu Software安装的&#xff0c;但是安装老不成功。 想用命令行指令dpkg进行安装&#xff0c;虽然能成功&#xff0c;但是后续使用 code . 命令打开VSCode又报错说找不到命令。 解决方式 在命令行中使用…

蓝桥杯day8刷题日记--双子数,有奖问答

双子数 思路&#xff1a;双子数数位必为偶数&#xff0c;所以枚举的范围可以缩小为1000至9999,100000至999999,10000000至99999999 有奖问答 思路&#xff1a;每次枚举做到第i道题数各种得分的次数&#xff0c;得分为0的情况是由上一道题除了100分以外的分数的可能情况&…

牛客NC101 压缩字符串(一)【简单 模拟 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/c43a0d72d29941c1b65c857d8ac9047e 思路 直接模拟参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值…

备考ICA----Istio实验4---使用 Istio 进行金丝雀部署

备考ICA----Istio实验4—使用 Istio 进行金丝雀部署 上一个实验已经通过DestinationRule实现了部分金丝雀部署的功能,这个实验会更完整的模拟展示一个环境由v1慢慢过渡到v2版本的金丝雀发布. 1. 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld…

MATLAB入门指南:从零开始进行数学建模竞赛

第1部分&#xff1a;认识MATLAB 1.1 什么是MATLAB&#xff1f; MATLAB&#xff08;Matrix Laboratory的缩写&#xff09;是一个高性能的数值计算环境和第四代编程语言。由MathWorks公司开发&#xff0c;它提供了一个便捷的数学解决框架&#xff0c;主要用于算法开发、数据可视…

VS2017 remote debugger实现在线调试note

前言&#xff1a; 做为一个程序员&#xff0c; 必备的技能就是代码调试了&#xff0c;但是你们真的掌握了VS 的调试吗&#xff1f;有些时候由于线上环境和本地环境的差异&#xff0c; 导致本地可以运行&#xff0c; 但是线上确是存在异常的情况。也许可以通过Log 很快的定位到…

5.4.2、【AI技术新纪元:Spring AI解码】OpenAI Text-to-Speech (TTS) Integration

OpenAI文本转语音(TTS)集成 简介 音频API基于OpenAI的TTS(文本转语音)模型提供了一个语音端点,用户可以: 朗读一篇书面博客文章。以多种语言生成语音输出。利用流媒体实现实时音频输出。必要条件 创建OpenAI账号并获取API密钥。您可以在OpenAI注册页面上注册,并在API密…

JavaEE--小Demo--数据库建立

目录 实验准备 本次所要新建的文件 实验步骤 step1-demo.sql 1.在resources文件夹下新建demo.sql文件 2.打开此目录&#xff0c;并运行命令提示符 3.打开数据库mysql -uroot -p 4.创建数据库create database demo; 5.使用数据库use demo; 6.导入数据source demo.sql;…

bochs模拟器中文文档

一、前言&#xff1a; 相信很多人都有使用模拟器的需求&#xff0c;因为并不是所有的场景都能用虚拟机代劳&#xff0c;如果你需要对程序精心的调试&#xff0c;实时查看内存与寄存器信息、研究指令集的工作原理&#xff0c;那么模拟器就是一种非常重要的工具。常见的模拟器有…

简介:KMeans聚类算法

在机器学习中&#xff0c;无监督学习一直是我们追求的方向&#xff0c;而其中的聚类算法更是发现隐藏数据结构与知识的有效手段。聚类是一种包括数据点分组的机器学习技术。给定一组数据点&#xff0c;我们可以用聚类算法将每个数据点分到特定的组中。 理论上&#xff0c;属于同…

海量数据处理项目-学以致用-商用短链平台需求文档拆分和总结

海量数据处理项目-学以致用-商用短链平台需求文档拆分和总结

提升Midjourney风格化的三个技巧

1. 引言 在前篇博文中&#xff0c;我们详细讲述了Midjourney的新功能风格参考的一些基础使用方法&#xff0c;事实上我们可以通过控制参数和提示权重进行更多的自定义操作&#xff0c;在本文中&#xff0c;我将向大家介绍我在网上搜集到的一些提升风格化效果的三个技巧。 闲话…

怎么卸载Mybatis?(仅需三步)

解决办法如下&#xff1a; 第一步&#xff1a;选择文件→设置 第二步&#xff1a;找到插件→输入Mybatis找到这个标志 第三步&#xff1a;把这个勾勾取消掉&#xff0c;点击确定&#xff0c;就可以轻松卸载了