zoukankan      html  css  js  c++  java
  • springboot 集成fastDfs

    pom.xml  引入依赖

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

    application.properties  配置

    # fastDfs配置
    fdfs.connect-timeout=600
    fdfs.so-timeout=1500
    fdfs.trackerList=192.168.1.207:22122
    fdfs.thumbImage.height=150
    fdfs.thumbImage.width=150
    spring.jmx.enabled=false
    fdfs.pool.max-total=200
    storage.resHost=http://192.168.1.207/
    storage.resPort=8888
    

    DfsAutoConfig.java  自动注入

    @Configuration
    @Import(FdfsClientConfig.class)
    @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
    public class DfsAutoConfig {
    
    }

    DfsResConfig  配置映射关系

    @Data
    @Component
    @ConfigurationProperties("storage")
    public class DfsResConfig {
    
        private String resHost;
        private String resPort;
    }F
    FastDfsClientUtil  工具类
    @Slf4j
    @Component
    public class FastDfsClientUtil {
    
        @Autowired
        private FastFileStorageClient storageClient;
    
        /**
         * @Author AlanMa
         * @Description MultipartFile类型的文件上传ַ
         * @Date 2019/11/12
         * @Param [file]
         * @return com.hiynn.data.visual.file.vo.ResultData<java.lang.String>
         */
        public ResultData<String> uploadFile(MultipartFile file){
    
            try{
                StorePath path = storageClient.uploadFile(file.getInputStream(), file.getSize(),
                        FilenameUtils.getExtension(file.getOriginalFilename()), null);
                return ResultDataUtil.setSuccessResult(path.getFullPath());
            }catch (Exception e){
                e.printStackTrace();
                return ResultDataUtil.setFailedResult();
            }
    
        }
    
        /**
         * @Author AlanMa
         * @Description 普通的文件上传
         * @Date 2019/11/12
         * @Param [file]
         * @return com.hiynn.data.visual.file.vo.ResultData<java.lang.String>
         */
        public ResultData<String> uploadFile(File file){
    
            try{
                FileInputStream inputStream = new FileInputStream(file);
                StorePath path = storageClient.uploadFile(inputStream, file.length(),
                        FilenameUtils.getExtension(file.getName()), null);
                return ResultDataUtil.setSuccessResult(path.getFullPath());
            }catch (Exception e){
                e.printStackTrace();
                return ResultDataUtil.setFailedResult();
            }
        }
    
        /**
         * @Author AlanMa
         * @Description 带输入流形式的文件上传
         * @Date 2019/11/12
         * @Param [is, size, fileName]
         * @return com.hiynn.data.visual.file.vo.ResultData<java.lang.String>
         */
        public ResultData<String> uploadFileStream(InputStream is, long size, String fileName) {
    
            StorePath path = storageClient.uploadFile(is, size, fileName, null);
            return ResultDataUtil.setSuccessResult(path.getFullPath());
        }
    
        /**
         * @Author AlanMa
         * @Description 将一段文本文件写到fastdfs的服务器上
         * @Date 2019/11/12
         * @Param [content, fileExtension]
         * @return java.lang.String
         */
        public String uploadFile(String content, String fileExtension) {
            byte[] buff = content.getBytes(Charset.forName("UTF-8"));
            ByteArrayInputStream stream = new ByteArrayInputStream(buff);
            StorePath path = storageClient.uploadFile(stream, buff.length, fileExtension, null);
            return path.getFullPath();
        }
    
        /**
         * @Author AlanMa
         * @Description 删除文件
         * @Date 2019/11/12
         * @Param [fileUrl]
         * @return com.hiynn.data.visual.file.vo.ResultData
         */
        public ResultData deleteFile(String fileUrl) {
    
            if (StringUtils.isEmpty(fileUrl)) {
                return ResultDataUtil.setFailedResult();
            }
            try {
                StorePath storePath = StorePath.praseFromUrl(fileUrl);
                storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
                return ResultDataUtil.setSuccessResult();
            } catch (FdfsUnsupportStorePathException e) {
                e.printStackTrace();
                log.warn(e.getMessage());
                return ResultDataUtil.setFailedResult();
            }
        }
    //
    //    /**
    //     * @Author AlanMa
    //     * @Description 上传文件图片
    //     * @Date 2019/11/12
    //     * @Param [is, size, fileExtName, metaData]
    //     * @return java.lang.String
    //     */
    //    public String upfileImage(InputStream is, long size, String fileExtName, Set<MateData> metaData) {
    //        StorePath path = storageClient.uploadImageAndCrtThumbImage(is, size, fileExtName, metaData);
    //        return path.getFullPath();
    //    }
    }
    

      测试

    @Slf4j
    @RestController
    @RequestMapping("/dfs")
    public class FileDfsController extends BaseController {
    
        @Autowired
        private FastDfsClientUtil fastDfsClientUtil;
    
        @Autowired
        private DfsResConfig dfsResConfig;
    
        @PostMapping("/single")
        public ResultData singleUpload(@RequestParam("file") MultipartFile file){
            ResultData<String> resultData = fastDfsClientUtil.uploadFile(file);
            if (Objects.equals(ResultEnum.SUCCESS.getCode(), resultData.getCode())) {
                String url = String.format("%s:%s/%s",dfsResConfig.getResHost(),dfsResConfig.getResPort(),resultData.getData());
                return ResultDataUtil.setSuccessResult(url);
            }
            return resultData;
    
        }
    }
    

      

  • 相关阅读:
    为什么要用where 1=1?
    idea中.ignore忽略提交文件到Git的使用
    IDEA开发工具使用 git 创建项目、拉取分支、合并分支
    Linux常用命令及Linux系统根目录下各个目录的作用
    Xshell和Xftp的安装与使用教程
    Moco使用简单指导
    这样写会有什么问题呢?
    grunt学习笔记
    基于nginx的WebSocket反向代理
    maven依赖查找方法
  • 原文地址:https://www.cnblogs.com/matd/p/11843928.html
Copyright © 2011-2022 走看看