FastDFS与Springboot集成
来源:互联网 发布:gg了什么意思网络用语 编辑:程序博客网 时间:2024/06/07 06:51
整合到Springboot项目流程
注意:必须是Springboot项目
1、添加pom依赖
<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.25.2-RELEASE</version></dependency>
2、将Fdfs配置引入项目
我将注解配置加在springboot的入口类中:@Import(FdfsClientConfig.class)
@Import(FdfsClientConfig.class)@SpringBootApplicationpublic 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
application.properties
fdfs.soTimeout=1500fdfs.connectTimeout=600fdfs.thumbImage.width=150fdfs.thumbImage.height=150fdfs.trackerList[0]=192.168.0.201:22122fdfs.trackerList[1]=192.168.0.202:22122
4、在项目中使用
客户端主要包括以下接口:
TrackerClient - TrackerServer接口
GenerateStorageClient - 一般文件存储接口 (StorageServer接口)
FastFileStorageClient - 为方便项目开发集成的简单接口(StorageServer接口)
AppendFileStorageClient - 支持文件续传操作的接口 (StorageServer接口)
笔者在前一个项目当中将fdfs主要用于图片存储,基于FastFileStorageClient接口和springmvc提供的MultipartFile接口封装了一个简单的工具类,方便全局管理与调用。如下所示:
/** * <p>Description: FastDFS文件上传下载包装类</p> * <p>Copyright: Copyright (c) 2016</p> * * @author 杨信 * @version 1.0 * @date 2016/9/7 */@Componentpublic 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:
@Controllerpublic 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; }}
阅读全文
0 0
- FastDFS与Springboot集成
- FastDFS与Springboot集成
- FastDFS与Springboot集成
- FastDFS与Springboot集成
- FastDFS与Springboot集成
- springboot集成fastdfs
- SpringBoot与Mybatis集成
- FastDFS NGINX集成与图片防盗
- Fastdfs与java集成使用过程
- Kafka 安装-配置-监控 与集成springboot
- SpringBoot应用与原理之集成Log4j2
- 随便谈谈RabbitMQ与springBoot进行集成。
- FastDFS实战(四)- Java集成FastDFS
- Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
- 使用SpringBoot之logback与logstash集成问题
- CentOS7下RabbitMq及与SpringBoot集成注意点
- springboot 集成hibernate 集成struts2
- springboot集成dubbo
- 输入月份所拥有的天数
- MySQL数据库——用通配符和正则表达式过滤数据(一)
- 问题 W: 计算提成与总费用
- 问题 X: 计算各位数字之和
- HTML5--焦点轮播图案例
- FastDFS与Springboot集成
- JavaScript基础(1)——初步认识JavaScript
- Qt
- 问题 Y: 大小写转换
- 安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter
- 我对STM32
- php的部分变量类型和函数类型
- TensorFlow实战——使用LSTM预测彩票
- 问题 Z: 显示字母