当前位置:   article > 正文

微服务 文件服务器,基于fastdfs实现文件上传微服务

微服务上传文件未进入接口,需要服务器怎么设置?

在《Spring Cloud实现文件上传》一文中,我利用Spring Cloud实现了文件上传的微服务。让我们再想想这种情况,如果我想上传文件后其他应用能够访问到该文件,那我们必须将该文件上传至某个ftp或web服务器路径目录下;如果多个应用都要调用文件上传服务,必须对文件的上传目录进行结构组织;如若要方便用户直接查找文件的话,可能还要对文件按规则统一命名,太多问题扑面而来。

上述问题究其根本,是我们需要一个图片服务器。它能够进行组织存储、文件命名、文档容灾等等,而fastdfs就是个很好的图片服务器脚手架。

fastdfs安装

9a716ad253ba

image.png

9a716ad253ba

image.png

9a716ad253ba

image.png

这里要特别注意一个配置,忽略它也许你访问图片会报

Nginx 400 Bad Request

在fastdfs-nginx-module模块mod_fastdfs.conf配置文件中有如下一个配置

# if the url / uri including the group name

# set to false when uri like /M00/00/00/xxx

# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx

# default value is false

url_have_group_name = true

可以看到,如果我们配置了group_name,必须设置url_have_group_name为true

总体思路

利用fastdfs client java操作fastdfs,将返回的url持久化到数据库中,并告知服务调用方。

如何利用java操作fastdfs呢,非常幸运在github上作者:happyfish100开源了fastdfs-client-java,将项目clone下来,进行打包,注册到本地库中。

在maven中添加fastdfs-client-java

org.csource

fastdfs-client-java

1.27-SNAPSHOT

在服务提供方内,添加uploadpicturetoFastDFS接口,向外提供服务。这里利用泛型来包装结果致Result类的data属性中,采用这种方法的好处是,我们无须针对各种返回结果定义对应的数据结构。

具体实现:

@Override

public Result uploadtofastdfs(String filename, byte[] data) {

PictureResult pictureResult = new PictureResult();

try {

FastDFSClient client = new FastDFSClient("classpath:fdfs_client.conf");

String extName = filename.substring(filename.lastIndexOf(".") + 1);

String url = client.uploadFile(data, extName);

pictureResult.setUrlDB(url);

pictureResult.setUrl(imageServerUrl + url);

System.out.println("-------文件上传成功!-------------");

System.out.println(pictureResult.getUrl());

Result result = new Result(0, "上传成功", pictureResult);

return result;

} catch (Exception e) {

e.printStackTrace();

}

return new Result(1, "上传失败");

}

因图片服务器的ip地址会改变,所以我们在数据库中只持久化fieldID值,为了方便服务方调用,同时向外提供拼接好的图片访问地址。

测试

9a716ad253ba

image.png

9a716ad253ba

image.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/677471
推荐阅读
相关标签
  

闽ICP备14008679号