FastDFS SpringBoot整合使用指南

FastDFS是一个开源的高性能分布式文件系统,主要解决了海量媒体文件存储及访问问题,它采用了一种特殊的两层目录结构,第一层目录为组名(group),第二层目录由用户自行指定(如M00、M01等),文件名则随意指定。SpringBoot是一个快速开发的Java EE微服务框架,它提供了丰富的插件机制,开发者只需要配置简单的参数,就可以便捷地与各种中间件快速集成,进而实现更高效的开发与部署。本文主要介绍如何使用FastDFS SpringBoot Starter将FastDFS文件系统集成到SpringBoot应用中,实现文件上传、下载、删除等操作。

一、快速集成

1、 在SpringBoot项目中加入fastdfs-spring-boot-starter依赖,Maven如下:

<dependency>
     <groupId>com.github.tobato</groupId>
     <artifactId>fastdfs-client-java-spring-boot-starter</artifactId>
     <version>2.0.2</version>
</dependency>

2、 配置application.yml文件,增加FastDFS相关配置参数,如下所示:

spring:
  proiles: dev
# FastDFS相关参数配置
fdfs:
# FastDFS服务器地址
  tracker-list: 192.168.0.109:22122
  connect-timeout: 5000
  network-timeout: 30000
  charset: UTF-8
  http:
    anti-steal-token: false
    secret-key:
  pool:
    max-total: 1000
    max-idle: 100
    min-idle: 10
    max-wait-millis: 5000

以上配置分别指定了FastDFS服务器地址、连接超时、网络超时、字符集、HTTP相关参数和连接池相关参数等。

二、文件上传

1、 在Controller层中注入FastFileStorageClient接口;

@RestController
@RequestMapping("/file")
public class FileUploadController {

    @Autowired
    private FastFileStorageClient storageClient;

    @PostMapping(value = "/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
        StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
        return storePath.getFullPath();
    }
}

2、 上述代码中,MultipartFile为Spring MVC框架中的文件上传对象,通过构造InputStream、文件大小和文件后缀名等参数,调用FastFileStorageClient的uploadFile方法即可将文件上传到指定的FastDFS服务器上,方法返回值StorePath即为上传后的文件路径及文件名等信息,其中,getFullPath方法返回完整的文件路径信息。

三、文件下载

1、 在Controller层中注入DownloadByteArray接口;

@RestController
@RequestMapping("/file")
public class FileDownloadController {

    @Autowired
    private DownloadByteArray downloadService;

    @GetMapping(value = "/download/{path}")
    public ResponseEntity&lt;byte[]&gt; downloadFile(@PathVariable("path") String path) throws IOException {
        byte[] content = downloadService.download(path);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDisposition(ContentDisposition.builder("attachment").filename(FilenameUtils.getName(path)).build());
        return new ResponseEntity&lt;&gt;(content, headers, HttpStatus.OK);
    }
}

2、 上述代码中,DownloadByteArray为FastDFS提供的下载文件服务接口,调用download方法即可获取相应的文件内容;headers.setContentType指定内容类型为二进制流,headers.setContentDisposition指定输出文件名及下载方式为附件形式,最终使用ResponseEntity将文件内容、header参数和状态信息进行包装后返回。

四、文件删除

1、 在Controller层中注入FastFileStorageClient接口;

@RestController
@RequestMapping("/file")
public class FileDeleteController {

    @Autowired
    private FastFileStorageClient storageClient;

    @DeleteMapping(value = "/delete/{path}")
    public String deleteFile(@PathVariable("path") String path) {
        storageClient.deleteFile(path);
        return "success";
    }
}

2、 上述代码中,FastFileStorageClient提供的deleteFile方法可以实现快速删除指定的FastDFS文件,删除成功后返回success表示删除成功。

五、注意事项

1、 关于存储路径

StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);

以上代码会返回一个StorePath对象,其中getStorePath()和getFullPath()是不同的。getStorePath()方法只返回后缀,而getFullPath()方法会返回完整的相对路径+文件名,如:group1/M00/00/00/wKgA71iLY1SAXMdhAAKq-VYtE_8629.jpg

2、FastDFS文件名大小限制

FastDFS文件名大小限制为128个字节,在调用上传服务时,应该确保文件名不超过该长度,可以通过FilenameUtils.getName(path)方法从文件完整路径中提取文件名,然后使用substring()等方法截取小于128个字节的子串,作为文件名。

3、fastdfs-spring-boot-starter的版本与升级

fastdfs-spring-boot-starter的版本与fastdfs-client-java的版本是有依赖关系的,一般需保证二者版本相同。

六、总结

FastDFS SpringBoot Starter提供了一种快速集成FastDFS分布式文件系统的方式,方便开发者能够便捷地使用FastDFS提供的丰富特性。本文介绍了如何使用FastDFS SpringBoot Starter实现SpringBoot文件的上传、下载和删除等操作,并对存储路径、FastDFS文件名大小限制和fastdfs-spring-boot-starter版本升级等注意事项进行了详细介绍。

原创文章,作者:RICI,如若转载,请注明出处:https://www.506064.com/n/145838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RICIRICI
上一篇 2024-10-29 18:58
下一篇 2024-10-29 18:58

相关推荐

  • wzftp的介绍与使用指南

    如果你需要进行FTP相关的文件传输操作,那么wzftp是一个非常优秀的选择。本文将从详细介绍wzftp的特点和功能入手,帮助你更好地使用wzftp进行文件传输。 一、简介 wzft…

    编程 2025-04-29
  • 从ga角度解读springboot

    springboot作为目前广受欢迎的Java开发框架,其中的ga机制在整个开发过程中起着至关重要的作用。 一、ga是什么 ga即Group Artifacts的缩写,它是Mave…

    编程 2025-04-29
  • Fixmeit Client 介绍及使用指南

    Fixmeit Client 是一款全能的编程开发工具,该工具可以根据不同的编程语言和需求帮助开发人员检查代码并且提供错误提示和建议性意见,方便快捷的帮助开发人员在开发过程中提高代…

    编程 2025-04-29
  • Open h264 slic使用指南

    本文将从多个方面对Open h264 slic进行详细阐述,包括使用方法、优缺点、常见问题等。Open h264 slic是一款基于H264视频编码标准的开源视频编码器,提供了快速…

    编程 2025-04-28
  • mvpautocodeplus使用指南

    该指南将介绍如何使用mvpautocodeplus快速开发MVP架构的Android应用程序,并提供该工具的代码示例。 一、安装mvpautocodeplus 要使用mvpauto…

    编程 2025-04-28
  • Python mmap共享使用指南

    Python的mmap模块提供了一种将文件映射到内存中的方法,从而可以更快地进行文件和内存之间的读写操作。本文将以Python mmap共享为中心,从多个方面对其进行详细的阐述和讲…

    编程 2025-04-27
  • Python随机函数random的使用指南

    本文将从多个方面对Python随机函数random做详细阐述,帮助读者更好地了解和使用该函数。 一、生成随机数 random函数生成随机数是其最常见的用法。通过在调用random函…

    编程 2025-04-27
  • SpringBoot Get方式请求传参用法介绍

    本文将从以下多个方面对SpringBoot Get方式请求传参做详细的阐述,包括URL传参、路径传参、请求头传参、请求体传参等,帮助读者更加深入地了解Get请求方式下传参的相关知识…

    编程 2025-04-27
  • RabbitMQ Server 3.8.0使用指南

    RabbitMQ Server 3.8.0是一个开源的消息队列软件,官方网站为https://www.rabbitmq.com,本文将为你讲解如何使用RabbitMQ Server…

    编程 2025-04-27
  • 按键精灵Python插件使用指南

    本篇文章将从安装、基础语法使用、实战案例以及常用问题四个方面介绍按键精灵Python插件的使用方法。 一、安装 安装按键精灵Python插件非常简单,只需在cmd命令行中输入以下代…

    编程 2025-04-27

发表回复

登录后才能评论