fastdfs返回的url_FastDFS上传文件Demospringboot实现
养成习惯,先赞后看!!!
1.前言
今天跟着教程后面终于实现了通过springboot将文件上传到FastDFS里面,还是有点小激动的,今天把过程分享出来,希望能够帮助到大家。还不知道FastDFS怎么安装或者是怎么整合Nginx的朋友,可以去看我之前的这两篇文章:分布式文件存储系统fastdfs安装教程整合FastDFS与Nginx,使生成的文件URL能够通过浏览器访问
2.步骤
2.1clone并将客户端导入到项目
因为FastDFS不像我们其他的框架,直接就可以从Maven仓库下载他相应的依赖,然后直接跟着教程后面敲就行了,他是必须我们先从Git上面把它的客户端Clone下来,然后导入到我们的项目,才能够直接使用的。所以我们首先需要将客户端clone下来。找到我们的Git工具,然后以管理员身份运行,之后输入下面的命令就能够将客户端clone先来了
git clone https://github.com/happyfish100/fastdfs-client-java
我们会在Git的目录下面看到这样一个文件:这就是FastDFS的客户端,之后我们就将这个客户端拷贝到我们的项目中,但是这时候他没有被识别成Maven的项目,所以我们还需要将它导入成Maven项目,按照下面的步骤即可:之后我们需要将这个项目install到我们的本地仓库,这一步可有可无,但是最好install一下,否则有的时候识别不出来这个项目。上面红框里面的地址就是它安装的地址
2.2导入FastDFS客户端的依赖
复制这段代码到你需要使用文件上传的模块里面。「这里有个小坑,到后面我会告诉大家怎么解决。
」
2.3创建并配置Tracker的配置信息
在需要文件上传的模块的resource文件夹下面创建配置文件
#tracker_server服务的地址及端口号tracker_server=tracker服务的IP:22122
#连接超时间,默认是30秒connect_timeout=30000
#网络通讯超时时间,默认是60秒network_timeout=60000
2.4编写上传文件的工具类
之后我们就可以正式的来编写我们的工具类了
public static String uploadImage(MultipartFile multipartFile) throws IOException {//这里是我定义的常量类 ConstantUtil constantUtil=new ConstantUtil(); String ImageUrl= constantUtil.getImageUrl(); //获取tracker的配置文件路径 String tracker=PmsUploadUtil.class.getResource("/tracker.conf").getPath(); //读取配置文件 try{ ClientGlobal.init(tracker); }catch (Exception e){ e.printStackTrace(); System.out.println("配置实例化失败"); } TrackerClient trackerClient=new TrackerClient(); TrackerServer trackerServer=trackerClient.getTrackerServer(); //创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用 StorageClient storageClient = new StorageClient(trackerServer, null); //获取文件的byte数组 byte[]bytes=multipartFile.getBytes(); //获取文件的后缀名 String multipartFileName=multipartFile.getOriginalFilename(); int index=multipartFileName.lastIndexOf("."); String extNamne=multipartFileName.substring(index+1); //使用StorageClient对象上传图片;扩展名不带“.” try { String[] strings = storageClient.upload_file(bytes, extNamne, null); //返回数组。包含组名和图片的路径。重组成URL链接 for (String string : strings) { ImageUrl+="/"+string; } }catch (Exception e){ e.printStackTrace(); }
return ImageUrl; }
这里还有一个注意点就是 「FastDFS1.27
」 和 「FastDFS1.29
」 两个版本有些许的不一样
在1.27的版本里面:我们获取TrackerServer是通过trackerClient.getConnection()来获取的,但是在1.29的版本里面:我们获取TrackerServer是通过trackerClient.getTrackerServer()来获取的,
其次FastDFS中的上传函数主要是下面两种,
这两个函数只有第一个参数存在区别。
第一是以二进制数据的形式将文件上传上去,第二个则是通过我们传入的文件的文件路径将文件上传上去。这里我选择的是通过第一种方式将文件进行上传,这里大家根据自己的实际需要进行选择。到这里我们关于文件的上传就已经编写完毕。
接下来我们就可以进行测试了,但是不好意思,不出意外的话,你可能会碰到这么个bug:「Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError
」
这个bug的意思就是你项目里面同时使用了 「log4j-over-slf4j.jar 和 slf4j-log4j12.jar
」 ,刚好这两个包是冲突的,所以我们必须要将其中一个去掉,但是之前自己的项目都是能够正常运行的,所以不出意外应该是FastDfS客户端里面应该是引用了上面依赖中的一个,所以这里我们重新进FastDFS客户端的pom依赖里面就能够看到他的依赖有哪些,我们可以看到如下图所示:说明就是因为FastDFS中又引入了其中的一个,所以我们需要在导入fastDFS的依赖里面将该依赖刨除掉
org.csourcefastdfs-client-java1.29-SNAPSHOTorg.slf4jslf4j-log4j12
这样我们的项目基本就能运行了
3. 上传演示
到了这里我们就可以来进行实际的测试一下了
可以看到图片的确上传上去了,并且后台给我们返回了FastDFS为我们生成的图片的URL地址,我们之后通过浏览器也的确能够进行访问了。
码字不易,如果觉得对你有帮助的话,可以关注我的公众号,新人UP需要你的支持!!!
不点在看,你也好看。
点了在看,你更好看!
fastdfs返回的url_FastDFS上传文件Demospringboot实现相关推荐
- ajaxfileupload 返回值_ajaxfileupload上传文件,返回json数据报错的问题。
在使用ajaxfileupload上传文件的时候,文件上传成功了,但是返回的json数据一直解析不了.一直提示:Resource interpreted as Document but transfe ...
- ajaxfileupload 返回值_ajaxFileUpload 上传文件 以及 返回值 带 pre 标签问题
$.ajaxFileUpload({ url:'upfile.action', secureuri:false, fileElementId:'inputpath', data:{"file ...
- ajaxfileupload 返回值_ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据...
ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况. 仔细调试发现其实在向服务器提交数据 ...
- ajaxfileupload 返回值_ajaxFileUpload上传文件返回json无法解析
最近做一个文件上传的功能,还要绑定数据传输到后台,为了不影响前端的体验,采用ajax发送请求.找了一些资料,网上的用ajaxupload这个插件. 但是无论成功还是失败都是执行的error的回调函数. ...
- django高级之点赞、文章评论及上传文件
目录: 点赞 文章评论 上传文件 保留页面条件 一.点赞 1.所用技术: django model F查询 js应用:$(function () {}); 为文件加载完成执行ready() 方法.等同 ...
- python flask上传文件_flask 文件上传(单文件上传、多文件上传)--
文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...
- Angular2使用ng2-file-upload上传文件
Angular2使用ng2-file-upload上传文件 ng2-file-upload是一个功能比较全面的上传文件的支持库 (参考:http://www.jianshu.com/p/0741186 ...
- linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...
- fastdfs java上传文件_FastDFS java客户端文件上传demo
FastDFS不多讲,直接上java调用代码,以下代码是一个spring mvc中一个完整的上传请求,请参阅 @RequestMapping(value = "/upload", ...
- FastDfs分片上传文件实战
1.引入的依赖 <!--redis依赖配置--> <dependency><groupId>org.springframework.boot</groupId ...
最新文章
- 递归和循环:跳台阶和变态跳台阶和矩形覆盖
- redis mysql查询数据类型_linux 常见的标识与Redis数据库详解
- hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
- Effective C++ 条款05
- arduino上传项目出错_Arduino入门前你该知道的事儿
- codeforces#597 D. Shichikuji and Power Grid(虚点+最小生成树+记录)
- python帝国cms_Python的类
- 梁兴珍 java_数据结构与算法_Java语言
- 计算机公式column,函数公式的左膀右臂:ROW、COLUMN函数知多少
- 区间DP--凸多边形三角剖分
- canvas drawImage方法不显示图片的解决方案
- PAT-乙级-1035 插入与归并
- 教程-TObjectList.Clear、TStringList.Clear方法对象有没有被释放
- Java http发送post请求
- java 字符串占位符动态替换值工具类
- SIM800L模块发送短信
- 基于边界凹凸点和神经网络的粘连颗粒图像分割算法研究(既然有网友要源代码研究,在此公开绝大部分源代码)
- web渗透信息收集知识总结
- 【数学】徐小湛第七高等数学新版
- 手机充值 html,仿京东手机充值进度导航_html/css_WEB-ITnose
热门文章
- 号外!德国惊现大罢工--要求每周上班28小时
- 【雷达测角】基于matlab和差波束加权【含Matlab源码 1674期】
- 【优化算法】蜻蜓算法(DA)【含Matlab源码 1306期】
- 【元胞自动机】基于matlab激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型【含Matlab源码 1297期】
- 【TSP】基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题【含Matlab源码 1254期】
- 【回归预测】基于matlab GA优化BP回归预测(含优化前的对比)【含Matlab源码 1790期】
- 【图像融合】基于matlab GUI小波变换图像融合(带面板)【含Matlab源码 700期】
- eclipse连接MySQL,进行增删改查
- php 导出文件另行指定路径,生成excel文件到指定目录的函数php类库
- 例2.7 输出梯形 - 九度教程第14题(排版题)