FastDFS基础学习(三)之通过fastdfs-client-java使用FastDFS进行上传,下载,删除,修改操作

Java上传文件

首先拉取最新的FastDFS代码

GitHub - wangwei216/fastdfs-client-java-master

打包到本地

mvn clean install

更换jdk版本  

        <!--  解决jdk版本冲突 编辑器代码中pom.xml文件,将 -->

        <jdk.version>1.6</jdk.version>

        <!--  修改为你当前jdk版本 我的是1.8 -->

        <jdk.version>1.8</jdk.version>

新建一个springboot项目

 创建一个controller用来进行测试

@RestController
@RequestMapping("/fdfs")
public class FdfsController {
    @GetMapping(value = "/hello")
    public String hello(){
        return "桃李不言下";
    }

}
配置文件启动端口修改一下
server.port=8090
pom.xml文件
<properties>
        <java.version>1.8</java.version>
        <fastjson.version>1.2.75</fastjson.version>
        <hutool.version>5.5.2</hutool.version>
        <generator.version>1.1.2</generator.version>
        <commons-io.version>2.8.0</commons-io.version>
        <commons-lang3.version>3.11</commons-lang3.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>

        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>java-testdata-generator</artifactId>
            <version>${generator.version}</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${commons-lang3.version}</version>
        </dependency>

            <!--引入FastDFS的Maven的依赖包
        注意:这个依赖没有出现在maven的中央库中,因此我们需要对源码进行编译
        将客户端的代码编译到maven的本地库中或者直接拷贝到本地maven库中
        -->
        <dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.29-SNAPSHOT</version>
        </dependency>
             <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.10</version>
            </plugin>
        </plugins>
    </build>

 resources下fastdfs-client.properties

#连接超时时间,单位为秒。
fastdfs.connect_timeout_in_seconds = 5
#通信超时时间,单位为秒。发送或接收数据时。假设在超时时间后还不能发送或接收数据,则本次网络通信失败
fastdfs.network_timeout_in_seconds = 30
#charset: 字符集
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
#tracker的http端口
fastdfs.http_tracker_http_port = 28083
#tracker服务器IP和端口设置
fastdfs.tracker_servers = 39.97.100.141:22122

fastdfs.connection_pool.enabled = true
fastdfs.connection_pool.max_count_per_entry = 500
fastdfs.connection_pool.max_idle_time = 3600
fastdfs.connection_pool.max_wait_time_in_ms = 1000

application.yml

server:
    port: 8090
spring:
  servlet:
    multipart:
      max-file-size: 50MB #文件上传大小限制为
      max-request-size: 200MB #请求大小限制为
#查看图片的端口号

fdfs_storage_proxy:
  protocol: http://
  domain: 192.168.178.130
  port: 8888

 测试

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/fdfs")
public class FdfsController {
    @Value("${fdfs_storage_proxy.protocol}")
    private String fdfs_storage_proxy_protocol;
    @Value("${fdfs_storage_proxy.domain}")
    private String fdfs_storage_proxy_domain;
    @Value("${fdfs_storage_proxy.port}")
    private String fdfs_storage_proxy_port;

    @GetMapping("/proxy")
    public String proxy(){
        return fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port;
    }

    @GetMapping(value = "/hello")
    public String hello(){
        return "桃李不言下";
    }
}

返回值状态枚举

ResultCode.enum
/*
* 返回值状态枚举
* */
public enum ResultCode {
    /*
     * 操作成功 请求成功
     * */
    SUCCESS("200","操作成功","请求成功"),
    /*
     * 上传失败
     * */
    UPLOAD_FAILED("700","上传失败","上传失败");

/*
* 状态码
* */
private String code;
/*
* 状态码含义
* */
 private String msg;
 /*
 * 状态码含义描述
 * */
 private String desc;

 ResultCode(String code,String msg,String desc){
     this.code=code;
     this.msg=msg;
     this.desc=desc;
 }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public String getDesc() {
        return desc;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}
R.java
/*
* 统一返回数据格式
* */
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class R<T>{
    /*
     * 状态码
     * */
    private String code;
    /*
     * 状态码含义
     * */
    private String msg;
    /*
     * 状态码含义描述
     * */
    private T data;
}
FdfsController.java
@RestController
@RequestMapping("/fdfs")
public class FdfsController {
    @Value("${fdfs_storage_proxy.protocol}")
    private String fdfs_storage_proxy_protocol;
    @Value("${fdfs_storage_proxy.domain}")
    private String fdfs_storage_proxy_domain;
    @Value("${fdfs_storage_proxy.port}")
    private String fdfs_storage_proxy_port;

    @GetMapping("/proxy")
    public String proxy(){
        return fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port;
    }

    @GetMapping(value = "/hello")
    public String hello(){
        return "桃李不言下";
    }

<!--上传接口-->

    @RequestMapping("/upload1")
    public R<String>update01(@RequestParam("header")MultipartFile multipartFile){
        //封装返回数据 默认为上传失败
        R<String> response = new R<>(ResultCode.UPLOAD_FAILED.getCode(), ResultCode.UPLOAD_FAILED.getMsg(), null);
        //获取原文件的名字
        String originalFilename = multipartFile.getOriginalFilename();
        //获取源文件后缀名
        String suffix = FilenameUtils.getExtension(originalFilename);
        //文件上传
        try {
            //加载fastdfs-client.properties配置文件
            ClientGlobal.initByProperties("fastdfs-client.properties");
            //获取tracker和storage客户端对象
            TrackerClient client = new TrackerClient();
            //获取tracker地址
            TrackerServer trackerServer = client.getTrackerServer();
            StorageServer storageServer=null;
            //获取storage地址
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            //文件上传字节数组
            InputStream inputStream = multipartFile.getInputStream();
            int length = inputStream.available();
            byte[] bytes = new byte[length];
            //文件上传成功后重新封装返回数据
            inputStream.read(bytes);
            String[] result = storageClient.upload_file(bytes, suffix, null);
            System.out.println(JSON.toJSONString(result));
            //文件上传后,重新封装返回数据
            response.setCode(ResultCode.SUCCESS.getCode());
            response.setMsg(ResultCode.SUCCESS.getMsg());
            String url =fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port+"/" +result[0]+"/"+result[1];
            response.setData(url);
        } finally {
            //向用户响应上传成功的访问地址
            return response;
        }
    }

}

 封装成Utils工具类

BaseFastDFSUtil.java
/*
* FastDFS工具类
* */
public class BaseFastDFSUtil {
    /*
    * 配置文件
    * */
    private final static String propFilePath="fastdfs-client.properties";

    static {
        //加载fastdfs-client.properties配置文件
        try {
            ClientGlobal.initByProperties(propFilePath);
        } catch (IOException  | MyException e) {
            e.printStackTrace();
        }
    }

    /*
    *文件上传到fastdfs
    *fdfs_storage_proxy_url storage web服务地址
    * inputStream 上传文件的自己输入流
    * file_etx_name 上传文件的后缀名
    *  上传成功后的web地址
    *  */
    public static String upload(String fdfs_storage_proxy_url, InputStream inputStream,String file_ext_name) throws Exception {
        //获取tracker和storage客户端对象
        TrackerClient client = new TrackerClient();
        //获取tracker地址
        TrackerServer trackerServer = client.getTrackerServer();
        StorageServer storageServer=null;
        //获取storage地址
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        int length = inputStream.available();
        byte[] bytes = new byte[length];
        //文件上传成功后重新封装返回数据
        inputStream.read(bytes);
        String[] result = storageClient.upload_file(bytes, file_ext_name, null);
        System.out.println(JSON.toJSONString(result));
        //断开连接
        storageClient.close();
        return fdfs_storage_proxy_url+"/" +result[0]+"/"+result[1];
    }
}
FdfsController.java
@RestController
@RequestMapping("/fdfs")
public class FdfsController {
    @Value("${fdfs_storage_proxy.protocol}")
    private String fdfs_storage_proxy_protocol;
    @Value("${fdfs_storage_proxy.domain}")
    private String fdfs_storage_proxy_domain;
    @Value("${fdfs_storage_proxy.port}")
    private String fdfs_storage_proxy_port;

    @GetMapping("/proxy")
    public String proxy(){
        return fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port;
    }

    @GetMapping(value = "/hello")
    public String hello(){
        return "桃李不言下";
    }

<!--上传接口-->
    @RequestMapping("/upload1")
    public R<String>update01(@RequestParam("header")MultipartFile multipartFile){
        //封装返回数据 默认为上传失败
        R<String> response = new R<>(ResultCode.UPLOAD_FAILED.getCode(), ResultCode.UPLOAD_FAILED.getMsg(), null);
        //获取原文件的名字
        String originalFilename = multipartFile.getOriginalFilename();
        //获取源文件后缀名
        String suffix = FilenameUtils.getExtension(originalFilename);
        //文件上传
        try {
            //加载fastdfs-client.properties配置文件
            ClientGlobal.initByProperties("fastdfs-client.properties");
            //获取tracker和storage客户端对象
            TrackerClient client = new TrackerClient();
            //获取tracker地址
            TrackerServer trackerServer = client.getTrackerServer();
            StorageServer storageServer=null;
            //获取storage地址
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            //文件上传字节数组
            InputStream inputStream = multipartFile.getInputStream();
            int length = inputStream.available();
            byte[] bytes = new byte[length];
            //文件上传成功后重新封装返回数据
            inputStream.read(bytes);
            String[] result = storageClient.upload_file(bytes, suffix, null);
            System.out.println(JSON.toJSONString(result));
            //文件上传后,重新封装返回数据
            response.setCode(ResultCode.SUCCESS.getCode());
            response.setMsg(ResultCode.SUCCESS.getMsg());
            //断开连接
            storageClient.close();
            String url =fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port+"/" +result[0]+"/"+result[1];
            response.setData(url);
        } finally {
            //向用户响应上传成功的访问地址
            return response;
        }
    }

<!--上传接口-->
    @RequestMapping("/upload2")
    public R<String>update02(@RequestParam("header")MultipartFile multipartFile){
        //封装返回数据 默认为上传失败
        R<String> response = new R<>(ResultCode.UPLOAD_FAILED.getCode(), ResultCode.UPLOAD_FAILED.getMsg(), null);
        //获取原文件的名字
        String originalFilename = multipartFile.getOriginalFilename();
        //获取源文件后缀名
        String suffix = FilenameUtils.getExtension(originalFilename);
        //文件上传
        try {
            String proxy=fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port;
            String url = BaseFastDFSUtil.upload(proxy, multipartFile.getInputStream(), suffix);
            //文件上传后,重新封装返回数据
            response.setCode(ResultCode.SUCCESS.getCode());
            response.setMsg(ResultCode.SUCCESS.getMsg());
            response.setData(url);
        } finally {
            //向用户响应上传成功的访问地址
            return response;
        }
    }
}

下载图片

utils层

/**
     * 文件下载
     *
     * @param groupName      组/卷名,默认值:group1
     * @param remoteFileName 文件名,例如:"M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg"
     * @return 文件的字节输入流
     */
    public static InputStream downloadFile(String groupName, String remoteFileName) {
        try {
            // 链接FastDFS服务器,创建tracker和Stroage
            TrackerClient trackerClient = new TrackerClient();
            TrackerServer trackerServer = trackerClient.getTrackerServer();
            StorageServer storageServer=trackerClient.getStoreStorage(trackerServer);
            //定义Stroage客户端对象,需要使用这个对象来完成具体的文件上传,下载和删除操作
            StorageClient storageClient = new StorageClient(trackerServer,storageServer);
            // 根据组名和文件名通过 Storage 客户端获取文件的字节数组
            byte[] bytes = storageClient.download_file(groupName == null ? "group1" : groupName, remoteFileName);
            // 返回字节流对象
            InputStream inputStream = new ByteArrayInputStream(bytes);
            return inputStream;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        return null;
    }
Controller层
    /**
         * 文件下载
         */
    @PostMapping("/downloadFile")
     public R<String> downloadFile(@RequestParam("groupName")String groupName,@RequestParam("remoteFileName") String remoteFileName) throws Exception {

                    //封装返回数据 默认为上传失败
                    R<String> response = new R<>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMsg(), "下载成功");
                     //调用下载接口
                      InputStream is = BaseFastDFSUtil
                              .downloadFile(groupName, remoteFileName);

                    File file = new File("D:/" + remoteFileName);
                    //判断目录是否存在如果不存在则存在
                    //getParent()——得到路径的父级及以上的目录,String类型。
                    //getParentFile()——得到路径的父级及以上的目录实例化的File对象。
                    //createNewFile()创建文件
                    //mkdir()——仅创建一层目录,返回true或false.
                    //mkdirs()——创建一层或多层目录,返回true或false.
                    if (!file.exists()){
                        boolean dr = file.getParentFile().mkdirs(); //创建目录
                    }
                    OutputStream os = new FileOutputStream(new File("D:/" + remoteFileName));

                      int index = 0 ;
                       while((index = is.read())!=-1){
                         os.write(index);
                     }
                         os.flush();
                         os.close();
                         is.close();
           return response;
    }

删除图片

Utils层

 /**
     * 文件删除
     *
     * @param groupName      组/卷名,默认值:group1
     * @param remoteFileName 文件名,例如:"M00/00/00/wKgKZl9tkTCAJAanAADhaCZ_RF0495.jpg"
     * @return 0为成功,非0为失败
     */
    public static int deleteFile(String groupName, String remoteFileName) {
        int result = -1;
        try {
            // 链接FastDFS服务器,创建tracker和Stroage
            TrackerClient trackerClient = new TrackerClient();
            TrackerServer trackerServer = trackerClient.getTrackerServer();
            StorageServer storageServer=trackerClient.getStoreStorage(trackerServer);
            //定义Stroage客户端对象,需要使用这个对象来完成具体的文件上传,下载和删除操作
            StorageClient storageClient = new StorageClient(trackerServer,storageServer);
            // 根据组名和文件名通过 Storage 客户端删除文件
            result = storageClient.delete_file(groupName == null ? "group1" : groupName, remoteFileName);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        return result;
    }

Controller层

    // 文件删除
    @PostMapping("/testDeleteFile")
    public void testDeleteFile(@RequestParam("groupName")String groupName,@RequestParam("remoteFileName") String remoteFileName) {
        int result = BaseFastDFSUtil.deleteFile(groupName, remoteFileName);
        System.out.println("result = " + result);
    }

修改文件

Utils工具类层

/**
     * 修改一个已经存在的文件
     *
     * @param oldGroupName 旧组名
     * @param oldFileName  旧文件名
     * @param file         新文件
     * @param fileName     新文件名
     * @return
     */
    public static String modifyFile(String oldGroupName, String oldFileName, MultipartFile file) throws Exception {
        // 先上传
       String stringR = update01(file);
        // 再删除
        int delResult = deleteFile(oldGroupName, oldFileName);
        if (delResult != 0) {
            return null;
        }
        return stringR;
    }

    /*
     *文件上传到fastdfs
     *fdfs_storage_proxy_url storage web服务地址
     * inputStream 上传文件的自己输入流
     * file_etx_name 上传文件的后缀名
     *  上传成功后的web地址
     *  */
    public static String  update01(MultipartFile multipartFile) throws Exception {
        //获取原文件的名字
        String originalFilename = multipartFile.getOriginalFilename();
        //获取源文件后缀名
        String suffix = FilenameUtils.getExtension(originalFilename);
        //文件上传
        //加载fastdfs-client.properties配置文件
        ClientGlobal.initByProperties("fastdfs-client.properties");
        //获取tracker和storage客户端对象
        TrackerClient client = new TrackerClient();
        //获取tracker地址
        TrackerServer trackerServer = client.getTrackerServer();
        StorageServer storageServer = null;
        //获取storage地址
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        //文件上传字节数组
        InputStream inputStream = multipartFile.getInputStream();
        int length = inputStream.available();
        byte[] bytes = new byte[length];
        //文件上传成功后重新封装返回数据
        inputStream.read(bytes);
        String[] result = storageClient.upload_file(bytes, suffix, null);
        System.out.println(JSON.toJSONString(result));
        String url = "http://" + "39.97.100.141" + ":" + "8888" + "/" + result[0] + "/" + result[1];
        return url;
    }
    /*
     *文件上传到fastdfs
     *fdfs_storage_proxy_url storage web服务地址
     * inputStream 上传文件的自己输入流
     * file_etx_name 上传文件的后缀名
     *  上传成功后的web地址
     *  */
    public static String upload(String fdfs_storage_proxy_url, InputStream inputStream, String file_ext_name) throws Exception {
        //获取tracker和storage客户端对象
        TrackerClient client = new TrackerClient();
        //获取tracker地址
        TrackerServer trackerServer = client.getTrackerServer();
        StorageServer storageServer=null;
        //获取storage地址
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        int length = inputStream.available();
        byte[] bytes = new byte[length];
        //文件上传成功后重新封装返回数据
        inputStream.read(bytes);
        String[] result = storageClient.upload_file(bytes, file_ext_name, null);
        System.out.println(JSON.toJSONString(result));
        //断开连接
        storageClient.close();
        return fdfs_storage_proxy_url+"/" +result[0]+"/"+result[1];
    }

Controller层

  // 文件替换
    @PostMapping("/testModifyFile")
    public String testModifyFile(@RequestParam("groupName")String groupName,@RequestParam("remoteFileName") String remoteFileName,@RequestParam("header")MultipartFile file) throws Exception {
        //封装返回数据 默认为上传失败
        String fileids = BaseFastDFSUtil.modifyFile(groupName, remoteFileName,file);
        return fileids;
    }

FastDFS校验文件类型

配置yaml

upload:
  base-url: http://116.62.44.5/
  allow-types:
    - image/jpeg
    - image/png
    - image/bmp
    - image/gif

创建配置类UploadProperties

package com.coydone.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.List;

@ConfigurationProperties(prefix = "upload")
public class UploadProperties {

    private String baseUrl;

    private List<String> allowTypes;

    public String getBaseUrl() {
        return baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    public List<String> getAllowTypes() {
        return allowTypes;
    }

    public void setAllowTypes(List<String> allowTypes) {
        this.allowTypes = allowTypes;
    }
}

在Controller使用


@RestController
@Component
@EnableConfigurationProperties(UploadProperties.class)
@RequestMapping("/fdfs")
public class FdfsController {

    @Autowired
    private UploadProperties prop;
    @RequestMapping("/upload1")
    public R<String> update01(@RequestParam("header") MultipartFile multipartFile){
        //封装返回数据 默认为上传失败
        R<String> response = new R<>(ResultCode.UPLOAD_FAILED.getCode(), ResultCode.UPLOAD_FAILED.getMsg(), null);

        //获取原文件的名字
        String originalFilename = multipartFile.getOriginalFilename();
        //获取源文件后缀名
        String suffix = FilenameUtils.getExtension(originalFilename);
        System.out.println("获取源文件后缀名"+suffix);
        // 1、校验文件类型
        String contentType = multipartFile.getContentType();
        if (!prop.getAllowTypes().contains(contentType)) {
            throw new RuntimeException("文件类型不支持");
        }
        // 2、校验文件内容
        try {
            BufferedImage image = ImageIO.read(multipartFile.getInputStream());
            if (image == null || image.getWidth() == 0 || image.getHeight() == 0) {
                throw new RuntimeException("上传文件有问题");
            }
        } catch (IOException e) {
            throw new RuntimeException("校验文件内容失败"+e.getMessage());
        }
        try {
            //加载fastdfs-client.properties配置文件
            ClientGlobal.initByProperties("fastdfs-client.properties");
            //获取tracker和storage客户端对象
            TrackerClient client = new TrackerClient();
            //获取tracker地址
            TrackerServer trackerServer = client.getTrackerServer();
            StorageServer storageServer=null;
            //获取storage地址
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            //文件上传字节数组
            InputStream inputStream = multipartFile.getInputStream();
            int length = inputStream.available();
            byte[] bytes = new byte[length];
            //文件上传成功后重新封装返回数据
            inputStream.read(bytes);
            String[] result = storageClient.upload_file(bytes, suffix, null);
            System.out.println(JSON.toJSONString(result));
            //文件上传后,重新封装返回数据
            response.setCode(ResultCode.SUCCESS.getCode());
            response.setMsg(ResultCode.SUCCESS.getMsg());
            String url =fdfs_storage_proxy_protocol+fdfs_storage_proxy_domain+":"+fdfs_storage_proxy_port+"/" +result[0]+"/"+result[1];
            response.setData(url);
        } finally {
            //向用户响应上传成功的访问地址
            return response;
        }
    }
}


版权声明:本文为weixin_53998054原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。