美文网首页
FastDFS实现附件上传下载

FastDFS实现附件上传下载

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2023-02-19 14:36 被阅读0次

FastDFS 的maven依赖

        <dependency>
            <groupId>net.oschina.zcx7878</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27.0.0</version>
        </dependency>

FastDFS 的jar包下载

链接:https://pan.baidu.com/s/1CbePpVRhL0LyZ5pQiDCxyA?pwd=mrlm
提取码:mrlm

FastDFS附件上传下载工具类

public class FastDFSUtil {

    private static final String CONF_FILENAME = Thread.currentThread().getContextClassLoader().getResource("").getPath() + "fastdfs.conf";

    private static StorageClient storageClient = null;

    /**
     * 只加载一次.
     */
    static {
        try {
            ClientGlobal.init(CONF_FILENAME);
            TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
            TrackerServer trackerServer = trackerClient.getConnection();
            StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
            storageClient = new StorageClient(trackerServer, storageServer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 文件上传
     * @return
     */
    public  String uploadFile(byte[] buffFile,String fileExtname) {
        TrackerServer ts = null;
        StorageServer ss = null;
        String retPath = null;
        try {
            /**
             * 参数1:为需要上传的文件字节数组
             * 参数2:为需要上传的文件扩展名
             * 参数3:为文件的属性文件通常不上传
             * 返回值:数组中第一个元素为文件所在组名
             *       数组中第二个元素为文件所在远程路径名
             */
            String[] result = storageClient.upload_file(buffFile, fileExtname, null);
            retPath = result[0]+"/"+result[1];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return retPath;
    }

    /**
     * 文件下载
     * @return
     */
    public  InputStream downloadFile(String groupName, String remoteFileName) {
        try {
            byte[] bytes = storageClient.download_file(groupName, remoteFileName);
            InputStream inputStream = new ByteArrayInputStream(bytes);
            return inputStream;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

    /**
     * 文件删除
     * @return
     */
    public int deleteFile(String groupName, String remoteFileName) {
        try {
            int result = storageClient.delete_file(groupName == null ? "group1" : groupName, remoteFileName);
            return result;
        } catch (Exception ex) {
            return 0;
        }
    }

}

FastDFS配置文件 (fastdfs.conf)

#连接tracker服务器超时时长
connect_timeout = 2

#socket连接超时时长
network_timeout = 30

#文件内容编码
charset = UTF-8

#22122是跟踪器地址 7777是nginx反向代理下载地址
#tracker服务器IP和端口(可以写多个逗号隔开)
#自行配置
tracker_server = 192.168.5.22:22122


相关文章

  • FastDFS实现附件上传下载

    FastDFS 的maven依赖 FastDFS 的jar包下载 链接:https://pan.baidu.com...

  • .net core下访问控制层的实现

    在上一篇[.net core下对于附件上传下载的实现]主要介绍了 .net core下文件上传下载的相关操作,本篇...

  • javaer学rust(四)

    之前实现了文件上传下载的功能,这次我们利用go-fastdfs实现一个分片上传的功能,按照惯例,先贴代码 这段代码...

  • 文件上传下载 Blob格式存储

    如何实现最基本的文件(附件)上传下载? 存储格式 数据库建立Blob/Clob/BYTEA格式的字段用于存储文件的...

  • FastDFS集群部署

    之前介绍过关于FastDFS单机部署,详见博文:FastDFS单节点部署 下面来看下FastDFS集群部署,实现高...

  • 记录vue组件el-upload踩过的几个坑

    最近在用el-upload这个组件,但发现有两个坑,主要是上传下载的时候。 附件上传附件上传需要调用后台的接口,而...

  • Docker安装fastdfs(14)

    题外话,好多fs系统为什么还要采用fastdfs呢?这个东西在做上传下载的时候很有优势,速度很快,没有分片,所有不...

  • 2019-10-31 FastDFS + Nginx 实现文件的

    Mac系统下实现 FastDFS 文件的上传 与下载 在 Mac 下通过 Docker + FastDFS + N...

  • Fastdfs功能-批量打包下载

    本篇功能是基于Fastdfs文件上传下载功能,作出的将文件打包成一个zip文件下载下来。页面效果如下 选择行,点击...

  • SpringBoot 集成FastDFS(十一)

      FastDFS是一款高性能的分布式文件系统。主要功能包括:文件存储,文件同步,文件访问(上传下载)。它可以解决...

网友评论

      本文标题:FastDFS实现附件上传下载

      本文链接:https://www.haomeiwen.com/subject/mrbikdtx.html