如何使用FastDFS编写文件上传功能

embedded/2024/12/22 20:24:34/

在编写该功能模块的时候,首先你要确保已经完成了FastDFS和Nginx的相关配置下载,没有的话可以看下我写的这篇文章:FastDFS环境安装

(1)编写接口

看你的编码习惯吧,我写了个接口

java">// 文件服务
public interface FileService {/*** 上传文件* @param fileBytes 图片文件转成的字节数组* @param fileName 文件名* @return 上传后的文件访问路径*/String uploadImage(byte[] fileBytes,String fileName);/*** 删除文件* @param filePath 文件路径*/void delete(String filePath);
}

(2)编写接口实现类

java">@DubboService
public class FileServiceImpl implements FileService {@Autowiredprivate FastFileStorageClient fastFileStorageClient;@Value("${fdfs.fileUrl}")private String fileUrl; // Nginx访问FastDFS中文件的路径@Overridepublic String uploadImage(byte[] fileBytes, String fileName) {if (fileBytes.length != 0) {try {// 1.将文件的字节数组转为输入流ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes);// 2.获取文件的后缀名String fileSuffix = fileName.substring(fileName.lastIndexOf(".") + 1);// 3.上传文件StorePath storePath = fastFileStorageClient.uploadFile(inputStream, inputStream.available(), fileSuffix, null);// 4.返回图片路径String imageUrl = fileUrl + "/"+storePath.getFullPath();return imageUrl;}catch (Exception e){throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);}} else {throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);}}@Overridepublic void delete(String filePath) {fastFileStorageClient.deleteFile(filePath);}
}

(3)编写控制器

java">/*** 文件*/
@RestController
@RequestMapping("/file")
public class FileController {@DubboReferenceprivate FileService fileService;/*** 上传文件* @param file 文件* @return 文件路径* @throws IOException*/@PostMapping("/uploadImage")public BaseResult<String> upload(MultipartFile file) throws IOException {// MultipartFile对象不能再服务间传递,必须转为byte数组byte[] bytes = file.getBytes();String url = fileService.uploadImage(bytes, file.getOriginalFilename());return BaseResult.ok(url);}/*** 删除文件* @param filePath 文件路径* @return 操作结果*/@DeleteMapping("/delete")public BaseResult delete(String filePath){fileService.delete(filePath);return BaseResult.ok();}
}


http://www.ppmy.cn/embedded/103370.html

相关文章

python json jsonl 的用法

JSON JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;广泛用于在客户端和服务器之间传输数据。以下是 Python 中使用 JSON 的一些常见用法&#xff1a; 1. 将 Python 对象转换为 JSON 字符串 使用 json.dumps() 函数将 Pyth…

行为模式7.解释器模式------DSL语言

行为型模式 模板方法模式&#xff08;Template Method Pattern&#xff09;命令模式&#xff08;Command Pattern&#xff09;迭代器模式&#xff08;Iterator Pattern&#xff09;观察者模式&#xff08;Observer Pattern&#xff09;中介者模式&#xff08;Mediator Pattern…

【C++】vector(下)--上篇

个人主页~ vector&#xff08;上&#xff09;~ vector 二、vector的模拟实现1、了解组成2、vector.h&#xff08;1&#xff09;为什么有了size_t参数的vector构造函数还要再写一个int参数的重载vector构造函数&#xff08;2&#xff09;为什么reserve不用memcpy&#xff08;3&…

Spring Boot实现发QQ邮件

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 引言 尽管电子邮件已不再是主流的沟通方式&#xff0c;但在职场中仍有不少人偏好使用邮件进行交流。这不仅仅是为了通信&#xff0c;更重要的是作为一种正式的工作记录&#xff0c;确保客户对自己曾经提出的…

docker在宿主机上最多可以创建多少个容器?

docker在宿主机上最多可以创建多少个容器&#xff1f; A. 1000 B. 和宿主机的cpu/memory 资源有关系 C. 不一定 选择C Docker 容器的数量受到宿主机的资源限制&#xff0c;包括CPU、内存和存储空间等。具体的容器数量取决于宿主机的硬件配置和资源使用情况。没有固定的数量限…

精准删除:掌握SQL中的DELETE语句

精准删除&#xff1a;掌握SQL中的DELETE语句 在数据库管理中&#xff0c;数据的增删改查&#xff08;CRUD&#xff09;是基本操作。其中&#xff0c;DELETE语句是用于从数据库表中删除数据的重要工具。本文将详细解释如何使用SQL的DELETE语句来删除数据&#xff0c;并提供实际…

【习题】Web组件和WebView

判断题 1. Web组件提供具有网页显示能力&#xff0c;ohos.web.webview提供web控制能力。 A、正确(True) B、错误(False) 2. 同一页面的多个Web组件&#xff0c;必须绑定不同的WebviewController。 A、正确(True) B、错误(False) 单选题 1. 下列关于Web组件的…

虚拟机【linux】配置无线网络

虚拟机【linux】配置无线网络 在Linux系统中配置网卡是一个常见的任务&#xff0c;特别是当你需要手动设置IP地址、子网掩码、网关或DNS服务器等信息时。不同的Linux发行版可能有不同的配置方法&#xff0c;但以下是一些基本且通用的步骤来配置网卡。 1. 确定网卡名称 首先&…