电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot集成FastDFS依賴實現文件上傳的示例

瀏覽:150日期:2023-03-11 18:47:46
前言

對FastDFS文件系統安裝后的使用。

FastDFS的安裝請參考這篇:Docker中搭建FastDFS文件系統(多圖)

本文環境:IDEA + JDK1.8 + Maven

本文項目代碼:fastdfs_jb51.rar

1、引入依賴

簡單說一下這個依賴部分,目前大部分都是采用的如下依賴:

<!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java --><dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27.0.0</version></dependency>

本著不重復造輪子,且為了使用方便我們可以去GitHub找一個集成好的依賴:

https://github.com/tobato/FastDFS_Client

<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</version></dependency>2、將Fdfs配置引入項目

只需要創建一個配置類就可以了:

@Configuration@Import(FdfsClientConfig.class)@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)public class ComponetImport { // 導入依賴組件}

參考截圖:

SpringBoot集成FastDFS依賴實現文件上傳的示例

3、在application.yml當中配置Fdfs相關參數

根據自己情況修改相應ip地址及端口號:

server: port: 8080ip: 10.211.55.4 # 根據自己FastDFS服務器修改fdfs: so-timeout: 1501 connect-timeout: 601 thumb-image: #縮略圖生成參數 width: 150 height: 150 tracker-list: #TrackerList參數,支持多個 - 10.211.55.4:22122 web-server-url: http://${ip}:8888/4、client封裝工具類

創建FastDFSClient.java包裝工具類,方便后面使用:

import com.github.tobato.fastdfs.domain.conn.FdfsWebServer;import com.github.tobato.fastdfs.domain.fdfs.StorePath;import com.github.tobato.fastdfs.domain.proto.storage.DownloadByteArray;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.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.nio.charset.Charset;@Componentpublic class FastDFSClient { @Autowired private FastFileStorageClient storageClient; @Autowired private FdfsWebServer fdfsWebServer; /** * 上傳文件 * @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 file 文件對象 * @return 文件訪問地址 * @throws IOException */ public String uploadFile(File file) throws IOException {FileInputStream inputStream = new FileInputStream (file);StorePath storePath = storageClient.uploadFile(inputStream,file.length(), FilenameUtils.getExtension(file.getName()),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 = fdfsWebServer.getWebServerUrl() + storePath.getFullPath();return fileUrl; } /** * 刪除文件 * @param fileUrl 文件訪問地址 * @return */ public void deleteFile(String fileUrl) {if (StringUtils.isEmpty(fileUrl)) { return;}try { StorePath storePath = StorePath.parseFromUrl(fileUrl); storageClient.deleteFile(storePath.getGroup(), storePath.getPath());} catch (FdfsUnsupportStorePathException e) { System.out.println(e.getMessage()); /** TODO 只是測試,所以未使用,logger,正式環境請修改打印方式 **/} } /** * 下載文件 * * @param fileUrl 文件URL * @return 文件字節 * @throws IOException */ public byte[] downloadFile(String fileUrl) throws IOException {String group = fileUrl.substring(0, fileUrl.indexOf('/'));String path = fileUrl.substring(fileUrl.indexOf('/') + 1);DownloadByteArray downloadByteArray = new DownloadByteArray();byte[] bytes = storageClient.downloadFile(group, path, downloadByteArray);return bytes; }}5、創建Conttoler測試類5.1 文件上傳測試

@RestController@RequestMapping('/file')public class FileUploadController { @Autowired private FastDFSClient fastDFSClient; /** * 上傳 * @param file * @return * @throws IOException */ @RequestMapping('/upload') public String uploadFile(MultipartFile file) throws IOException {return fastDFSClient.uploadFile(file); }}

執行效果截圖:

SpringBoot集成FastDFS依賴實現文件上傳的示例

5.2、下載文件測試

@RestController@RequestMapping('/file')public class FileUploadController { @Autowired private FastDFSClient fastDFSClient; /** * 下載 * @param fileUrl * @param response * @throws IOException */ @RequestMapping('/download') public void downloadFile(String fileUrl, HttpServletResponse response) throws IOException {byte[] bytes = fastDFSClient.downloadFile(fileUrl);/** TODO 這里只是為了整合fastdfs,所以寫死了文件格式。需要在上傳的時候保存文件名。下載的時候使用對應的格式 **/response.setHeader('Content-disposition', 'attachment;filename=' + URLEncoder.encode('sb.xlsx', 'UTF-8'));response.setCharacterEncoding('UTF-8');ServletOutputStream outputStream = null;try { outputStream = response.getOutputStream(); outputStream.write(bytes);} catch (IOException e) { e.printStackTrace();} finally { try {outputStream.flush();outputStream.close(); } catch (IOException e) {e.printStackTrace(); }} }}

測試下載路徑:

http://127.0.0.1:8080/file/download?fileUrl=group1/M00/00/00/CtM3BF84r4SAEPDgAABoGL78QcY682.jpg

拼接的參數為:group1/M00/00/00/CtM3BF84r4SAEPDgAABoGL78QcY682.jpg

大家想修改路徑的話,需要同步修改 downloadFile() 方法里的分隔方式。

SpringBoot集成FastDFS依賴實現文件上傳的示例

到此這篇關于SpringBoot集成FastDFS依賴實現文件上傳的示例的文章就介紹到這了,更多相關SpringBoot FastDFS文件上傳內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 真空上料机(一种真空输送机)-百科 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 移动厕所租赁|移动卫生间|上海移动厕所租赁-家瑞租赁 | 泰州物流公司_泰州货运公司_泰州物流专线-东鑫物流公司 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 中红外QCL激光器-其他连续-半导体连续激光器-筱晓光子 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 工业CT-无锡璟能智能仪器有限公司 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 期货软件-专业期货分析软件下载-云智赢 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 首页|成都尚玖保洁_家政保洁_开荒保洁_成都保洁 | 工业插头-工业插头插座【厂家】-温州罗曼电气 | 「钾冰晶石」氟铝酸钾_冰晶石_氟铝酸钠「价格用途」-亚铝氟化物厂家 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 西门子代理商_西门子变频器总代理-翰粤百科| 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 达利园物流科技集团- | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 |