200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Docker搭建分布式文件系统fastDFS及SpringBoot整合fastDFS

Docker搭建分布式文件系统fastDFS及SpringBoot整合fastDFS

时间:2023-04-12 01:02:23

相关推荐

Docker搭建分布式文件系统fastDFS及SpringBoot整合fastDFS

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服务器的iptracker_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的客户端的操作代码的封装,大家可以自己封装一下

@RestControllerpublic 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;}}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。