香港vps服务器的FastDFS与Springboot集成

已关闭留言

香港vps服务器的FastDFSSpringboot集成:

整合到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;

}

}

FastDFSSpringboot集成