记一次springboot整合fastdfs实现与文件服务器的交互

由于最近有一个需求:要求前端聊天时发送的语音文件(base64)到后端,转换成音频文件,并保存到文件服务器,并且能通过地址直接访问。所以本文优先说一下springboot集成fastdfs客户端并实现文件的上传。

1.首先引入客户端jar包(目前失眠岸上引入的jar包大体分成两个,综合考虑维护性和springboot项目特点选取这个)

记一次springboot整合fastdfs实现与文件服务器的交互_第1张图片

2.配置类

记一次springboot整合fastdfs实现与文件服务器的交互_第2张图片

3.配置文件(模糊的地方大家填上自己服务端设置的地址)

记一次springboot整合fastdfs实现与文件服务器的交互_第3张图片

4.工具类(为了方便大家直接贴代码)

**
 * Fastdfs工具类
 */
@Component
public class FastdfsClientUtil {
    @Value("${fdfs.reqHost}")
    private String reqHost;

    @Value("${fdfs.reqPort}")
    private String reqPort;

    @Autowired
    private FastFileStorageClient storageClient;

    @Autowired
    private ThumbImageConfig thumbImageConfig; //创建缩略图   , 缩略图访问有问题,暂未解决


    public String uploadFile(MultipartFile file) throws IOException {
        StorePath storePath = storageClient.uploadFile((InputStream)file.getInputStream(),file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),null);

        String path = thumbImageConfig.getThumbImagePath(storePath.getPath()) ;
        System.out.println("thumbImage :" + path);  //   缩略图访问有问题,暂未解决

        return getResAccessUrl(storePath);
    }

    public void delFile(String groupName , String path) {
        storageClient.deleteFile(path);
    }

    public InputStream download(String groupName, String path ) {
        InputStream ins =  storageClient.downloadFile(groupName, path, new DownloadCallback(){
            @Override
            public InputStream recv(InputStream ins) throws IOException {
                // 将此ins返回给上面的ins
                return ins;
            }}) ;
        return ins ;
    }

    /**
     * 封装文件完整URL地址
     * @param storePath
     * @return
     */
    private String getResAccessUrl(StorePath storePath) {
        String fileUrl = "http://" + reqHost + ":" + reqPort + "/" + storePath.getFullPath();
        return fileUrl;
    }

}

5.后面直接就可以使用了(验证过没问题哈)怎么转换成byte[]这个大家应该没有问题

 

你可能感兴趣的:(记一次springboot整合fastdfs实现与文件服务器的交互)