SpringMVC整合fastdfs-client-java实现web文件上传下载

本文详细介绍了如何在SpringMVC中整合fastdfs-client-java,实现文件的上传和下载功能。首先,从GitHub下载并编译fastdfs-client-java源码,将其引入到项目中。接着,展示了文件上传的实现过程,通过MultipartFile对象获取文件的byte[],使用FileManager上传到FastDFS。文件下载部分,通过文件的绝对路径获取group_name和remote_filename,调用fastdfs-client-java的下载API,结合SpringMVC实现文件下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一篇博客记录了FastDFS v5.0.5在Linux CentOS 7中的安装与配置(分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置),本篇blog主要记录一下SpringMVC整合FastDFS的java客户端实现web中的文件上传与下载。

下载编译

在余大的GitHub上可以下载到fastdfs-client-java的源代码:
这里写图片描述

如上图,这个版本是通过JDK1.5编译的,根据需求可以通过源码重新编译jar包,我这里将原项目的maven编译插件的版本改为JDK 1.7之后重新进行了编译,编译安装成功后可以在我们本地的maven仓库看到fastdfs-client-java的jar包:
这里写图片描述
这里写图片描述

最后在我们项目的pom中添加fastdfs-client-java的坐标信息就OK了:

<!-- fastdfs-client -->
<dependency>
    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.25</version>
</dependency>

文件上传

首先来实现文件上传,fastdfs-client-java的上传是通过传入一个byte[ ]来完成的,简单看一下源码:

public String[] upload_file(byte[] file_buff, String file_ext_name, 
           NameValuePair[] meta_list) throws IOException, MyException{
    final String group_name = null;
    return this.upload_file(group_name, file_buff, 0, file_buff.length, file_ext_name, meta_list);
}

如上所示,暂且不再深入研究原理,此处我们知道需要一个byte[ ]类型的参数就可以了,而SpringMVC的文件上传用到的MultipartFile对象可以直接通过getBytes方法得到文件的byte[ ],也就是CommonsMultipartFile类中的getBytes(),源码如下:

@Override
public byte[] getBytes() {
    if (!isAvailable()) {
        throw new IllegalStateException("File has been moved - cannot be read again");
    }
    byte[] bytes = this.fileItem.get();
    return (bytes != null ? bytes : new byte[0]);
}

那么接下来我们就知道如何上传了,当然首先需要做一些简单的封装,这里把文件上传的相关属性封装在了一个接口中,需要用到文件上传的相关实体或者工具类直接实现这个接口即可:

public interface FileManagerConfig extends Serializable {
   
   

    public static final String FILE_DEFAULT_AUTHOR = "WangLiang";

    public static final String PROTOCOL = "http://";

    public static final String SEPARATOR = "/";

    public static final String TRACKER_NGNIX_ADDR
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值