利用FastDFS实现文件上传到docker上实现文件管理

FastDFS简介

FastDFS对文件进行管理,功能包括:文件存储、同步、访问 上传、下载等,解决了大容量存储和负载均衡的问题。特别适合一文件为载体的在线服务。

FastDFS架构包括Tracker server和Storage server。客户端请求Tracker Server进行文件上传,下载。通过Tracker server 调度最终由Storage server完成文件上传和下载
Tracker server作用是负载均衡和调度
Storage server作用是文件存储
客户端最终把文件传递到Storage服务器上,Storage server 没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将Storage称为存储服务器
在这里插入图片描述
步骤

1.Storage server 服务器定时向Tracker server 发送上传状态
2.客户端上传链接请求
3.Tracker server 服务器查询可用Storage
4.返回信息(Storage的ip和端口)
5.生成file_id
6.上传到文件磁盘
7.把路径和文件名发送给客户端
存储文件信息

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名

利用FastDFS实现上传删除(干货)

启动FastDfs需要启动tracker、storage

虚拟机开启docker容器

docker pull morunchang/fastdfs #拉取镜像
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh #运行tracker 
docker run -d --name storage --net=host -e TRACKER_IP=192.168.220.100:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh #创建storage容器

docker run -d --name storage --net=host -e TRACKER_IP=<your tracker server address>:22122 -e GROUP_NAME=<group name> morunchang/fastdfs sh storage.sh
  ·使用的网络模式是-net=host,host模式可以不用映射容器宿主机,替换为ip即可
  ·是组名,即storage的组
  ·如果想要增加新的storage服务器,再次运行该命令,注意更换新组名
 
 1.修改storage容器的nginx的配置
   docker exec -it storage /bin/bash
 进入后
   vi /etc/nginx/conf/nginx.conf
   在nginx.conf里面下面内容为add_header Cache-Control no-stroe
   localtion ~/M00{
   
		root /data/fast_data/data;
		ngx_fastdfs_module;
		add_header Cache-Control no-store; #添加禁止缓存
	};
	exit #退出容器
	docker restart storage # 重启容器

创建upload-service上传微服务,通过fastdfs-client组件实现文件上传和删除的功能
pom.xml内容为

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Spring-cloud</artifactId>
        <groupId>com.zzz</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>upload-service</artifactId>
    <dependencies>
     <!-- web插件依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
         <!-- eureka依赖 -->
        <dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot实现文件上传FastDFS,需要使用FastDFS客户端和Spring Boot的MVC框架。下面是一个基本的实现过程: 1. 添加FastDFS客户端依赖 在pom.xml文件中添加FastDFS客户端依赖,如下所示: ``` <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</version> </dependency> ``` 2. 配置FastDFS客户端 在Spring Boot的配置文件application.properties中添加FastDFS客户端的配置信息,如下所示: ``` fdfs.tracker-list=192.168.1.2:22122 ``` 其中,fdfs.tracker-list表示FastDFS的Tracker服务器列表。 3. 实现文件上传接口 在Spring Boot的控制器中实现文件上传接口,如下所示: ``` @RestController public class FileUploadController { @Autowired private FastFileStorageClient storageClient; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { try { StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null); return storePath.getFullPath(); } catch (IOException e) { e.printStackTrace(); return "上传失败"; } } } ``` 其中,@Autowired注解注入了FastDFS客户端的FastFileStorageClient对象,@PostMapping注解定义了文件上传接口,@RequestParam注解获取上传的文件。 4. 测试文件上传接口 可以使用Postman等工具测试文件上传接口,如下所示: - 请求URL:http://localhost:8080/upload - 请求方法:POST - 请求参数:file(选择要上传的文件) - 返回结果:成功上传的文件路径 以上就是基本的文件上传FastDFS实现过程,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值