FastDFS整合Springboot

1.首先在linux下安装好FastDFS, 安装步骤:https://www.cnblogs.com/handsomeye/p/9451568.html


2.引入FastDFS的依赖,在pom.xml引入:


<!--FastDFS客户端-->
<dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
    <version>1.26.1-RELEASE</version>
</dependency>

3.配置application.yml文件

server:
  port: 8082
spring:
  application:
    name: upload-service
  servlet:
    multipart:
      max-file-size: 100MB
fdfs:
  so-timeout: 1501 # 读取超时时间
  connect-timeout: 601 # 连接超时时间
  thumb-image: # 缩略图
    width: 60
    height: 60
  tracker-list: # tracker地址:你的虚拟机服务器地址+端口(默认是22122- 120.53.27.229:22122

4.将Fdfs配置引入项目

将FastDFS-Client客户端引入本地化项目的方式非常简单,在SpringBoot项目/src/[com.xxx.主目录]/conf当中配置

@Configuration
@Import(FdfsClientConfig.class)
// 解决jmx重复注册bean的问题
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class FastClientImporter {
    
}

5.将文件上传的工具类引入到service包下

@Service
public class UploadService {

    private static final List<String> CONTENT_TYPES = Arrays.asList("image/gif","image/jpeg");
    private static final Logger logger = LoggerFactory.getLogger(UploadService.class);
    @Autowired
    private FastFileStorageClient fastFileStorageClient;

    public String uploadImage(MultipartFile file) {

        String originalFilename = file.getOriginalFilename();
        //校验文件类型
        String contentType = file.getContentType();
        if(!CONTENT_TYPES.contains(contentType)){
            logger.info("文件类型不合法: {}",originalFilename);
            return null;
        }
        try {
            //校验文件内容
            BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
            if(bufferedImage == null){
                logger.info("文件内容不合法: {}", originalFilename);
                return null;
            }

            //保存到FastDfS服务器
            String suffix = StringUtils.substringAfterLast(originalFilename, ".");
            StorePath storePath = this.fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(), suffix, null);

            return "http://120.53.27.229/"+storePath.getFullPath();
        } catch (IOException e) {
            logger.info("服务器内部错误:" + originalFilename);
            e.printStackTrace();
        }
        return null;
    }
}

6.在controller包下写一个文件上传的方法

@Controller
@RequestMapping("upload")
public class UploadController {

    @Autowired
    private UploadService uploadService;

    @PostMapping("image")
    public String uploadImage(@RequestParam("file")MultipartFile file){
        String url = this.uploadService.uploadImage(file);
        if(StringUtils.isEmpty(url)){
            // 请求参数不合法
            System.out.println("请求参数不合法");
        }
        // 上传成功
        System.out.println("图片路径:"+ url);
    }
}

FastDFS是一个开源的分布式文件系统,可以实现文件存储和查找。而Spring Boot是一个基于Spring Framework的快速开发框架。 在整合FastDFSSpring Boot时,我们可以使用Token来实现权限的控制和安全性。 首先,我们可以使用Spring Boot提供的Token机制来验证用户的身份。当用户登录时,系统会生成一个Token,并将其返回给客户端。客户端在后续的请求中,需要将Token放在请求头中进行验证。这可以防止未经授权的用户访问受限资源。 其次,我们可以将FastDFS与Token进行整合。当用户上传文件时,系统会生成一个唯一的Token,并将Token和文件的元数据存储在数据库中。在用户下载文件时,系统会验证Token的有效性,并根据Token从数据库中获取文件的元数据,然后使用FastDFS进行文件的查找和传输。这样可以确保只有拥有有效Token的用户才能下载文件,增加了系统的安全性。 还可以通过Token来限制用户的操作权限。对于不同的用户角色,可以分配不同的Token权限。比如,管理员可以进行文件的上传和删除操作,普通用户只能进行文件的下载操作。这样可以实现对系统资源的精细权限控制。 综上所述,通过整合FastDFSSpring Boot的Token机制,我们可以实现对文件系统的权限控制和安全性增强。用户通过验证Token来访问受限资源,同时根据Token的权限来限制用户的操作行为。这样能够提高系统的安全性和可靠性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值