当前位置:   article > 正文

docker快速安装fastdfs服务springboot访问(推荐使用Minio文件服务器)_文件服务器spring推荐

文件服务器spring推荐

一、安装FastDFS

防火墙开放端口:8080、22122、23000 

实际使用过程中发现,Minio文件服务更好用,安装便捷、稳定、自带可视化。MinIO下载 

  • 拉取镜像(此镜像已经配置好了nginx,访问端口为8080)
docker pull morunchang/fastdfs
  • 运行tracker 跟踪器(端口为:22122)
 docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
  • 运行storage 存储器(端口为:23000)【注意:修改IP为自己的IP 端口不变】
  docker run -d --name storage --net=host -e TRACKER_IP=192.168.61.200:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
  • nginx的配置(是storage服务里面自带的nginx服务,不是你主机上的nginx
docker exec -it storage  /bin/bash
cd data
vi nginx/conf/nginx.conf
  • 将红色框的内容添加进去(后面提供了可复制的内容)
    (键盘方向键↓↓↓↓↓↓↓↓↓↓↓就能看见下边的内容了)

  1. location /group1/M00 {
  2. proxy_next_upstream http_502 http_504 error timeout invalid_header;
  3. proxy_cache http-cache;
  4. proxy_cache_valid 200 304 12h;
  5. proxy_cache_key $uri$is_args$args;
  6. proxy_pass http://fdfs_group1;
  7. expires 30d;
  8. }

编辑完后:wq退出编辑

  • 然后退出docker
exit
  •  重启storage服务
docker restart storage

至此服务安装完毕.

借鉴博客:使用Docker快速搭建FastDFS_米斯特尔.W-CSDN博客_docker fastdfs搭建

二、集成Java、Python

集成python

pip install py3Fdfs==2.2.0

 配置文件:client.conf

  1. connect_timeout=30
  2. network_timeout=60
  3. tracker_server = 0.0.40.17:22122
  4. http.tracker_server_port = 8088

上传文件:

  1. from fdfs_client.client import get_tracker_conf, Fdfs_client
  2. if __name__ == '__main__':
  3. tracker_conf = get_tracker_conf('./client.conf')
  4. client = Fdfs_client(tracker_conf)
  5. filename = client.upload_by_filename(filename='1.jpg')
  6. print(filename)

 

集成springboot

  1. <dependency>
  2. <groupId>com.github.tobato</groupId>
  3. <artifactId>fastdfs-client</artifactId>
  4. <version>1.26.2</version>
  5. </dependency>
  1. # 分布式文件系统fastdfs配置
  2. fdfs:
  3. # socket连接超时时长
  4. soTimeout: 1500
  5. # 连接tracker服务器超时时长
  6. connectTimeout: 600
  7. pool:
  8. # 从池中借出的对象的最大数目
  9. max-total: 153
  10. # 获取连接时的最大等待毫秒数100
  11. max-wait-millis: 102
  12. # 缩略图生成参数,可选
  13. thumbImage:
  14. width: 150
  15. height: 150
  16. # 跟踪服务器tracker_server请求地址,支持多个,这里只有一个,如果有多个在下方加- x.x.x.x:port
  17. trackerList:
  18. - 192.168.0.1:22122
  19. #
  20. # 存储服务器storage_server访问地址
  21. web-server-url: http://192.168.0.1/
  1. 在springboot启动类上加
  2. @Import(FdfsClientConfig.class)
  3. @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)

工具类:

  1. package com.itheima.util;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.IOException;
  4. import java.time.LocalDateTime;
  5. import java.util.HashSet;
  6. import java.util.Set;
  7. import com.github.tobato.fastdfs.domain.MataData;
  8. import com.github.tobato.fastdfs.domain.StorePath;
  9. import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Component;
  13. import org.springframework.web.multipart.MultipartFile;
  14. import com.github.tobato.fastdfs.service.FastFileStorageClient;
  15. /**
  16. * FastDFS客户端包装类
  17. *
  18. * @author CL
  19. *
  20. */
  21. @Component
  22. public class FdfsClientWrapper {
  23. @Autowired
  24. private FastFileStorageClient fastFileStorageClient;
  25. public String uploadFile(MultipartFile file) throws IOException {
  26. if (file != null) {
  27. byte[] bytes = file.getBytes();
  28. long fileSize = file.getSize();
  29. String originalFilename = file.getOriginalFilename();
  30. String extension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
  31. return this.uploadFile(bytes, fileSize, extension);
  32. }
  33. return null;
  34. }
  35. /**
  36. * 文件上传
  37. *
  38. * @param bytes 文件字节
  39. * @param fileSize 文件大小
  40. * @param extension 文件扩展名
  41. * @return 返回文件路径(卷名和文件名)
  42. */
  43. public String uploadFile(byte[] bytes, long fileSize, String extension) {
  44. ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  45. // 元数据
  46. Set<MataData> metaDataSet = new HashSet<MataData>();
  47. metaDataSet.add(new MataData("dateTime", LocalDateTime.now().toString()));
  48. StorePath storePath = fastFileStorageClient.uploadFile(bais, fileSize, extension, metaDataSet);
  49. return storePath.getFullPath();
  50. }
  51. /**
  52. * 下载文件
  53. *
  54. * @param filePath 文件路径
  55. * @return 文件字节
  56. * @throws IOException
  57. */
  58. public byte[] downloadFile(String filePath) throws IOException {
  59. byte[] bytes = null;
  60. if (StringUtils.isNotBlank(filePath)) {
  61. String group = filePath.substring(0, filePath.indexOf("/"));
  62. String path = filePath.substring(filePath.indexOf("/") + 1);
  63. DownloadByteArray byteArray = new DownloadByteArray();
  64. bytes = fastFileStorageClient.downloadFile(group, path, byteArray);
  65. }
  66. return bytes;
  67. }
  68. /**
  69. * 删除文件
  70. *
  71. * @param filePath 文件路径
  72. */
  73. public void deleteFile(String filePath) {
  74. if (StringUtils.isNotBlank(filePath)) {
  75. fastFileStorageClient.deleteFile(filePath);
  76. }
  77. }
  78. }

测试接口:

  1. import com.itheima.util.FdfsClientWrapper;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestParam;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import java.io.IOException;
  8. @RestController
  9. public class TestController {
  10. private final FdfsClientWrapper fdfsClientWrapper;
  11. @Autowired
  12. public TestController(FdfsClientWrapper fdfsClientWrapper) {
  13. this.fdfsClientWrapper = fdfsClientWrapper;
  14. }
  15. @RequestMapping("upload")
  16. public String upload(@RequestParam MultipartFile file) {
  17. String filePath = null;
  18. try {
  19. filePath = fdfsClientWrapper.uploadFile(file);
  20. } catch (IOException e) {
  21. return "上传文件失败";
  22. }
  23. return filePath;
  24. }
  25. @RequestMapping("del")
  26. public String del(@RequestParam String filePath) {
  27. fdfsClientWrapper.deleteFile(filePath);
  28. return "删除成功";
  29. }
  30. }

访问地址:

fastdfs服务器IP:8080/group1/M00/00/00/rBMvdGFAtNGAVy55AAyEK5YJQm8841.png

三、文件清理

 进入容器

docker exec -it storage  /bin/bash
cd /data/fast_data/data

这就是文件所在位置,根据需要进行删除即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/986582
推荐阅读
相关标签
  

闽ICP备14008679号