养成习惯,先赞后看!!!

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.27FastDFS1.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实现相关推荐

  1. ajaxfileupload 返回值_ajaxfileupload上传文件,返回json数据报错的问题。

    在使用ajaxfileupload上传文件的时候,文件上传成功了,但是返回的json数据一直解析不了.一直提示:Resource interpreted as Document but transfe ...

  2. ajaxfileupload 返回值_ajaxFileUpload 上传文件 以及 返回值 带 pre 标签问题

    $.ajaxFileUpload({ url:'upfile.action', secureuri:false, fileElementId:'inputpath', data:{"file ...

  3. ajaxfileupload 返回值_ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据...

    ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况. 仔细调试发现其实在向服务器提交数据 ...

  4. ajaxfileupload 返回值_ajaxFileUpload上传文件返回json无法解析

    最近做一个文件上传的功能,还要绑定数据传输到后台,为了不影响前端的体验,采用ajax发送请求.找了一些资料,网上的用ajaxupload这个插件. 但是无论成功还是失败都是执行的error的回调函数. ...

  5. django高级之点赞、文章评论及上传文件

    目录: 点赞 文章评论 上传文件 保留页面条件 一.点赞 1.所用技术: django model F查询 js应用:$(function () {}); 为文件加载完成执行ready() 方法.等同 ...

  6. python flask上传文件_flask 文件上传(单文件上传、多文件上传)--

    文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...

  7. Angular2使用ng2-file-upload上传文件

    Angular2使用ng2-file-upload上传文件 ng2-file-upload是一个功能比较全面的上传文件的支持库 (参考:http://www.jianshu.com/p/0741186 ...

  8. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件

    FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...

  9. fastdfs java上传文件_FastDFS java客户端文件上传demo

    FastDFS不多讲,直接上java调用代码,以下代码是一个spring mvc中一个完整的上传请求,请参阅 @RequestMapping(value = "/upload", ...

  10. FastDfs分片上传文件实战

    1.引入的依赖 <!--redis依赖配置--> <dependency><groupId>org.springframework.boot</groupId ...

最新文章

  1. 递归和循环:跳台阶和变态跳台阶和矩形覆盖
  2. redis mysql查询数据类型_linux 常见的标识与Redis数据库详解
  3. hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
  4. Effective C++ 条款05
  5. arduino上传项目出错_Arduino入门前你该知道的事儿
  6. codeforces#597 D. Shichikuji and Power Grid(虚点+最小生成树+记录)
  7. python帝国cms_Python的类
  8. 梁兴珍 java_数据结构与算法_Java语言
  9. 计算机公式column,函数公式的左膀右臂:ROW、COLUMN函数知多少
  10. 区间DP--凸多边形三角剖分
  11. canvas drawImage方法不显示图片的解决方案
  12. PAT-乙级-1035 插入与归并
  13. 教程-TObjectList.Clear、TStringList.Clear方法对象有没有被释放
  14. Java http发送post请求
  15. java 字符串占位符动态替换值工具类
  16. SIM800L模块发送短信
  17. 基于边界凹凸点和神经网络的粘连颗粒图像分割算法研究(既然有网友要源代码研究,在此公开绝大部分源代码)
  18. web渗透信息收集知识总结
  19. 【数学】徐小湛第七高等数学新版
  20. 手机充值 html,仿京东手机充值进度导航_html/css_WEB-ITnose

热门文章

  1. 号外!德国惊现大罢工--要求每周上班28小时
  2. 【雷达测角】基于matlab和差波束加权【含Matlab源码 1674期】
  3. 【优化算法】蜻蜓算法(DA)【含Matlab源码 1306期】
  4. 【元胞自动机】基于matlab激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型【含Matlab源码 1297期】
  5. 【TSP】基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题【含Matlab源码 1254期】
  6. 【回归预测】基于matlab GA优化BP回归预测(含优化前的对比)【含Matlab源码 1790期】
  7. 【图像融合】基于matlab GUI小波变换图像融合(带面板)【含Matlab源码 700期】
  8. eclipse连接MySQL,进行增删改查
  9. php 导出文件另行指定路径,生成excel文件到指定目录的函数php类库
  10. 例2.7 输出梯形 - 九度教程第14题(排版题)