docker安装fastdfs镜像

 docker pull morunchang/fastdfs

运行tracker

  docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh

运行storage,注意把xxx.xxx.xxx.xxx换成自己的EOS服务器IP

docker run -d --name storage --net=host -e TRACKER_IP=xxx.xxx.xxx.xxx:22122 -e GROUP_NAME= morunchang/fastdfs sh storage.sh

进入storage容器内部

docker exec -it storage  /bin/bash

修改nginx配置文件

vi /data/nginx/conf/nginx.conf

添加如下内容

location /group1/M00 {proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_cache http-cache;proxy_cache_valid  200 304 12h;proxy_cache_key $uri$is_args$args;proxy_pass http://fdfs_group1;expires 30d;}

退出

exit

重启storage

docker restart storage

开启端口号22122,80,23000,注意开启23000

firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=23000/tcp --permanent 

在pom.xml中引入依赖fastDFS的java客户端依赖,使用开源中国的

        <dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27.0.0</version></dependency>

在类路径下添加配置文件fdfs_client.conf


connect_timeout=30network_timeout=60base_path=/home/fastdfs#xxx.xxx.xxx.xxx改为自己EOS服务器的ip
tracker_server=xxx.xxx.xxx.xxx:22122log_level=infouse_connection_pool = falseconnection_pool_max_idle_time = 3600load_fdfs_parameters_from_tracker=falseuse_storage_id = falsestorage_ids_filename = storage_ids.confhttp.tracker_server_port=80

写一个demo测试使用

package com.lhc.fastdfs.test;import org.csource.fastdfs.*;
import org.springframework.core.io.ClassPathResource;public class TestFastDFS {public static void main(String[] args) throws Exception {String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();// 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。ClientGlobal.init(filePath);// 2、创建一个 TrackerClient 对象。直接 new 一个。TrackerClient trackerClient = new TrackerClient();// 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。TrackerServer trackerServer = trackerClient.getConnection();// 4、创建一个 StorageServer 的引用,值为 nullStorageServer storageServer = null;// 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用StorageClient storageClient = new StorageClient(trackerServer, storageServer);// 6、使用 StorageClient 对象上传图片。//扩展名不带“.”String[] strings = storageClient.upload_file("C:\Users\Administrator\Desktop\timg.jpg", "jpg",null);// 7、返回数组。包含组名和图片的路径。for (String string : strings) {System.out.println(string);}}
}

输出
group1
M00/00/00/rBL-lVtN0uKAImXSAAAVnhPk2K8504.png
访问fastDFS文件系统,效果如下,可见已经存储在文件系统中
http://xxx.xxx.xxx.xxx:8080/group1/M00/00/00/rBL-lVtN2OCAJS0UAAE7_YSxmAs135.jpg

使用angular.js上传文件
html的内容如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Index</title>
</head><script type="text/javascript" src="webjars/angularjs/1.7.2/angular.min.js"></script><body>
<div ng-app="myApp" ng-controller="myCon"><input type="file" name="uploadFile" id="uploadFile"><input type="button" value="upload" ng-click="uploadFile()"><img src="{{image.url}}" width="200px" height="200px"></div></body><script type="text/javascript" src="userController.js"></script>
</html>

controller的js如下


var app=angular.module("myApp",[]);app.controller("myCon",function ($scope,$http) {$scope.uploadFile=function(){var formData=new FormData();var file =document.querySelector("#uploadFile").files[0];formData.append("file",file);$http({method:'POST',url:'/uploadFile',data: formData,headers: {'Content-Type':undefined},transformRequest: angular.identity}).then(function successCallback(response) {$scope.image={};$scope.image.url = response.data.message;}, function errorCallback(response) {// 请求失败执行代码alert("上传失败")});}
})

springboot后台代码如下,其中FastDFSClient,为对fastDFS的客户端的操作代码的封装,大家可以自己封装一下

@RestController
public class UserController {@Value("${FILE_URL}")private String FILE_URL;@RequestMapping("/uploadFile")public R upload(@RequestParam(value = "file",required = true) MultipartFile file)throws Exception{String originalFilename = file.getOriginalFilename();String name = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);FastDFSClient fastDFSClient = new FastDFSClient("classpath:fdfs_client.conf");String s = fastDFSClient.uploadFile(file.getBytes(), name);System.out.println(s);R r = new R();r.setMessage(FILE_URL+s);r.setStatus("200");return r;}
}

选择文件点击上传后效果如下

Docker搭建分布式文件系统fastDFS及SpringBoot整合fastDFS相关推荐

  1. 基于Docker搭建分布式文件系统FastDfs

    最近公司业务要做了一个报表管理系统,这就涉及到了海量文件存储问题.对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文件较少的 ...

  2. windows平台使用Docker搭建分布式Spark 与 hadoop集群

    若不关心具体搭建过程,只想运行分布式集群,请直接前往3.2开始 (本人已上传镜像至服务器) 续前节 windows平台使用Docker搭建分布式hadoop集群 安装分布式Spark篇 1. 运行wi ...

  3. fastdfs 吗 支持windows_从零搭建分布式文件系统MinIO比FastDFS要更合适

    前两天跟大家分享了一篇关于如何利用FastDFS组件来自建分布式文件系统的文章,有兴趣的朋友可以阅读下<用asp.net core结合fastdfs打造分布式文件存储系统>.通过留言发现大 ...

  4. 从零搭建分布式文件系统MinIO比FastDFS要更合适

    前两天跟大家分享了一篇关于如何利用FastDFS组件来自建分布式文件系统的文章,有兴趣的朋友可以阅读下<用asp.net core结合fastdfs打造分布式文件存储系统>.通过留言发现大 ...

  5. fastdfs原理_搭建分布式文件系统FastDFS集群

    本文摘选abcdocker运维博客 abcdocker运维博客 – 专注DevOps自动化运维,传播优秀it运维技术文章​i4t.com 在生产环境中往往数据存储量比较大,因此会大部分会选择分布式存储 ...

  6. fastdfs windows部署_从零搭建分布式文件系统MinIO比FastDFS要更合适

    前两天跟大家分享了一篇关于如何利用FastDFS组件来自建分布式文件系统的文章,有兴趣的朋友可以阅读下<用asp.net core结合fastdfs打造分布式文件存储系统>.通过留言发现大 ...

  7. rabbit和mysql事务_分布式事务原理及SpringBoot整合RabbitMQ实现可靠事件,TCC事务模型及接口幂等性...

    分布式事务 我们知道在单数据库系统中,实现数据的一致性,通过数据库的事务来处理比较简单.在微服务或分布式系统中,各个独立的服务都会有自己的数据库,而不是在同一个数据库中,所以当一组事务(如商品交易中, ...

  8. springboot整合fastdfs

    在项目开发中经常会碰到做文件上传的功能,一般来说,文件上传的步骤就那么几步,前台通过提交一个选中的文件,后端对文件做处理然后将文件上传至指定的地址,这个地址是一个真实的物理存储路径,可以是本地,也可以 ...

  9. 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...

最新文章

  1. C++11 unordered_map详细介绍
  2. socket阻塞与IO多路复用
  3. 201671010103 2016-2017-2 《Java程序设计》第十二周学习心得
  4. html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器
  5. symfony2的中文视频教程更新中(原创),对Symfony感兴趣的学员可以看下
  6. python可以参加哪些竞赛_找出Python竞赛中可达到的分数的程序
  7. 外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样(转)
  8. Linux dnssec原理,什么是DNSSEC?DNSSEC的概念及作用
  9. 使用超时加锁:pthread_mutex_timedlock
  10. java读取文件 16进制_Java:文件到十六进制?
  11. 浅谈“异常信息泄露(应用程序错误)”
  12. 如何遮挡电影英汉字幕
  13. dejavu项目笔记
  14. 名人养生贴网络疯转 跟李嘉诚们学做长寿优等生
  15. C# Jason 序列化到文件 和从文件反序列化到对象
  16. 【RDMA】RoCE网络QoS|应用层设置PFC等级|Tos|Priority|TC
  17. 在京东,我是怎么做项目管理的
  18. oracle安装报错ins-30131
  19. XBee zigbee 使用指南---XBee API模式介绍
  20. 基于JSP的网上书店的设计

热门文章

  1. idea2022修改鼠标悬浮提示时间
  2. 有哪些中文海报让你拍案叫绝?
  3. Redis原理--为什么性能高,速度快?
  4. iphone启用证书_如何在iPhone上启用低数据模式
  5. MFC 加载ICON类型BitMap的方式
  6. 《小狗钱钱》--chapter9.10.11--有了目标后生活充实了起来
  7. live share使用体验
  8. section元素的使用
  9. 蓝桥杯 调手表【BFS】
  10. YDOOK:ESP8266: 官方AT固件下载 WiFi 开发固件下载