• Spring Boot 整合 FastDFS


    引入pom依赖

        <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>1.26.2</version>
            </dependency>

    配置类:

    /**
     * @author 阮胜
     * @EnableMBeanExport 用于解决jmx重复注册bean的问题
     * @date 2018/8/16 18:22
     */
    @Configuration
    @Import(FdfsClientConfig.class)
    @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
    public class ComponentImport {
    }

    工具类:

    /**
     * @author 阮胜
     * @date 2018/8/16 17:33
     */
    @Component
    public class FastDFSWrapper {
        private static final String RESOURCE_URL = "http://192.168.186.128:22122/";
        private final Logger logger = LoggerFactory.getLogger(FastDFSWrapper.class);
    
        @Autowired
        private FastFileStorageClient storageClient;
    
    
        /**
         * 上传文件
         *
         * @param file 文件对象
         * @return 文件访问地址
         * @throws IOException
         */
        public String uploadFile(MultipartFile file) throws IOException {
            StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
            return getResAccessUrl(storePath);
        }
    
        /**
         * 将一段字符串生成一个文件上传
         *
         * @param content       文件内容
         * @param fileExtension
         * @return
         */
        public String uploadFile(String content, String fileExtension) {
            byte[] buff = content.getBytes(Charset.forName("UTF-8"));
            ByteArrayInputStream stream = new ByteArrayInputStream(buff);
            StorePath storePath = storageClient.uploadFile(stream, buff.length, fileExtension, null);
            return getResAccessUrl(storePath);
        }
    
        /**
         * 封装图片完整URL地址
         *
         * @param storePath
         * @return
         */
        private String getResAccessUrl(StorePath storePath) {
            return RESOURCE_URL + storePath.getFullPath();
        }
    
        /**
         * 删除文件
         *
         * @param fileUrl 文件访问地址
         * @return
         */
        public void deleteFile(String fileUrl) {
            if (StringUtils.isEmpty(fileUrl)) {
                return;
            }
            try {
                StorePath storePath = StorePath.praseFromUrl(fileUrl);
                storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
            } catch (FdfsUnsupportStorePathException e) {
                logger.warn(e.getMessage());
            }
        }
    }

    控制层:

    /**
     * @author 阮胜
     * @date 2018/8/16 18:29
     */
    @RestController
    public class FileController {
        private final FastDFSWrapper fastDFSWrapper;
    
        public FileController(FastDFSWrapper fastDFSWrapper) {
            this.fastDFSWrapper = fastDFSWrapper;
        }
    
        @GetMapping("/upload/{str}")
        public String uploadStr(@PathVariable String str) {
            return fastDFSWrapper.uploadFile(str, "txt");
        }
    }

    application.yml 配置

    fdfs:
    so-timeout: 1501
    connect-timeout: 601
    thumb-image: #缩略图生成参数
    150
    height: 150
    tracker-list: #TrackerList参数,支持多个
    - 192.168.186.128:22122
    pool:
    max-total: 150 #从池中借出的对象的最大数目
    max-wait-millis: 100 #获取连接时的最大等待毫秒数100
    server:
    port: 9999

    使用PostMan 测试:

    测试结果:

    这里的8080端口是服务器中  /etc/fdfs/client.conf  文件中的 http.tracker_server_port=8080 默认指定的

  • 相关阅读:
    Taro 3.1 beta 发布: 开放式架构新增 4 端支持
    JS复习之深浅拷贝
    痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.6)- 串行NOR Flash下载算法(MCUXpresso IDE篇)
    《痞子衡嵌入式半月刊》 第 22 期
    痞子衡嵌入式:读工程师岗位工作31年退休的同事离职信有感
    痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.5)- 串行NOR Flash下载算法(IAR EWARM篇)
    千万不要给女朋友解释 什么是 “羊群效应”
    保姆级教程,带你认识大数据,从0到1搭建 Hadoop 集群
    短链接服务Octopus的实现与源码开放
  • 原文地址:https://www.cnblogs.com/cearnach/p/9491183.html
Copyright © 2020-2023  润新知