# FastDFS与Springboot集成

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/12125.html | 发布：2022-11-03 | 更新：2022-11-03 | 分类：建站教程、投稿分享

## **整合到Springboot项目流程**

 

### 1、添加pom依赖

 

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

 

### 2、将Fdfs配置引入项目

 

@Import(FdfsClientConfig.class)  
@SpringBootApplication  
public class JingtongApplication {

 

public static void main(String[] args) {  
 SpringApplication.run(JingtongApplication.class, args);  
 }  
}

 

### 3、在spring配置文件中加入fdfs相关配置

 

根据项目当中使用配置文件类型（.yml和.properties选择其中一个），加入相应的配置。

 

#### **application.yml**

 

**fdfs:  
 soTimeout: 1500  
 connectTimeout: 600  
 thumbImage: #缩略图生成参数  
 width: 150  
 height: 150  
 trackerList: #TrackerList参数,支持多个  
 - 192.168.0.201:22122  
 - 192.168.0.202:22122**

 

4、在项目中使用  
客户端主要包括以下接口：  
TrackerClient - TrackerServer接口  
GenerateStorageClient - 一般文件存储接口 (StorageServer接口)  
FastFileStorageClient - 为方便项目开发集成的简单接口(StorageServer接口)  
AppendFileStorageClient - 支持文件续传操作的接口 (StorageServer接口)

 

package com.digi_zones.support.fs;

 

import com.digi_zones.config.AppConfig;  
import com.digi_zones.contacts.AppConstants;  
import com.github.tobato.fastdfs.domain.FileInfo;  
import com.github.tobato.fastdfs.domain.StorePath;  
import com.github.tobato.fastdfs.exception.FdfsUnsupportStorePathException;  
import com.github.tobato.fastdfs.service.FastFileStorageClient;  
import org.apache.commons.io.FilenameUtils;  
import org.apache.commons.lang3.StringUtils;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Component;  
import org.springframework.web.multipart.MultipartFile;

 

import java.io.ByteArrayInputStream;  
import java.io.IOException;  
import java.nio.charset.Charset;

 

/**  
 * <p>Description: FastDFS文件上传下载包装类</p>  
 * <p>Copyright: Copyright (c) 2016</p>  
 *  
 * @author 杨信  
 * @version 1.0  
 * @date 2016/9/7  
 */  
@Component  
public class FastDFSClientWrapper {

 

private final Logger logger = LoggerFactory.getLogger(FastDFSClientWrapper.class);

 

@Autowired  
 private FastFileStorageClient storageClient;

 

@Autowired  
 private AppConfig appConfig; // 项目参数配置

 

/**  
 * 上传文件  
 * @param file 文件对象  
 * @return 文件访问地址  
 * @throws IOException  
 */  
 public String uploadFile(MultipartFile file) throws IOException {  
 StorePath storePath = storageClient.uploadFile(file.getInputStream(),file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),null);  
 return getResAccessUrl(storePath);  
 }

 

/**  
 * 将一段字符串生成一个文件上传  
 * @param content 文件内容  
 * @param fileExtension  
 * @return  
 */  
 public String uploadFile(String content, String fileExtension) {  
 byte[] buff = content.getBytes(Charset.forName("UTF-8"));  
 ByteArrayInputStream stream = new ByteArrayInputStream(buff);  
 StorePath storePath = storageClient.uploadFile(stream,buff.length, fileExtension,null);  
 return getResAccessUrl(storePath);  
 }

 

// 封装图片完整URL地址  
 private String getResAccessUrl(StorePath storePath) {  
 String fileUrl = AppConstants.HTTP_PRODOCOL + appConfig.getResHost()  
 + ":" + appConfig.getFdfsStoragePort() + "/" + storePath.getFullPath();  
 return fileUrl;  
 }

 

/**  
 * 删除文件  
 * @param fileUrl 文件访问地址  
 * @return  
 */  
 public void deleteFile(String fileUrl) {  
 if (StringUtils.isEmpty(fileUrl)) {  
 return;  
 }  
 try {  
 StorePath storePath = StorePath.praseFromUrl(fileUrl);  
 storageClient.deleteFile(storePath.getGroup(), storePath.getPath());  
 } catch (FdfsUnsupportStorePathException e) {  
 logger.warn(e.getMessage());  
 }  
 }  
}

 

除了FastDFSClientWrapper类中用到的api，客户端提供的api还有很多，可根据自身的业务需求，将其它接口也添加到工具类中即可。如下所示：

 

// 上传文件，并添加文件元数据  
StorePath uploadFile(InputStream inputStream, long fileSize, String fileExtName, Set<MateData> metaDataSet);  
// 获取文件元数据  
Set<MateData> getMetadata(String groupName, String path);  
// 上传图片并同时生成一个缩略图  
StorePath uploadImageAndCrtThumbImage(InputStream inputStream, long fileSize, String fileExtName,  
 Set<MateData> metaDataSet);  
// 。。。  
在项目中使用FastDFSClientWrapper：

 

@Controller  
public class MyController {

 

@Autowired  
 private FastDFSClientWrapper dfsClient;

 

// 上传图片  
 @RequestMapping(value = "/upload", method = RequestMethod.POST)  
 public String upload(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {  
 // 省略业务逻辑代码。。。  
 String imgUrl = dfsClient.uploadFile(file);  
 // 。。。。  
 return xxxx;

 

}  
}

 

![FastDFS与Springboot集成](https://www.mfisp.com/wp-content/uploads/2022/10/11048-apQ5nb.jpg)

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
