zoukankan      html  css  js  c++  java
  • 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 默认指定的

  • 相关阅读:
    洛谷P2742 【模板】二维凸包
    计算几何笔记
    洛谷P1251 餐巾计划问题(最小费用最大流)
    洛谷P2762 太空飞行计划问题(最大权闭合图)
    洛谷P2764 最小路径覆盖问题(二分图)
    [置顶] Guava学习之ArrayListMultimap
    sphinx coreseek SetSortMode(SPH_SORT_ATTR_ASC, '') 对float 排序设置bug
    magento 修改 paypal order product name
    硬盘“坏了”怎么办
    能够兼容ViewPager的ScrollView
  • 原文地址:https://www.cnblogs.com/cearnach/p/9491183.html
Copyright © 2011-2022 走看看