使用图片服务器FastDFS实现图片上传
发布日期:2021-10-05 13:14:45 浏览次数:2 分类:技术文章

本文共 1969 字,大约阅读时间需要 6 分钟。

在工作中我们需要使用一台专门的服务器去管理系统的图片资源,这里介绍一种常用的FastDFS 服务器来实现图片的上传与加载

FastDFS架构包括Tracker server和Storage server完成文件上传和下载。Tracker server的作用是负载均衡和调度,通过tracker Server在文件上传时可根据一些cel找到Storage server提供文件上传服务。可以将tracker成为追踪服务器或调度服务器。

Storage server作用是文件存储,客户端上传的文件最终存储在storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统的来管理文件。可以将Storage成为存储服务器。

首先需要配置好FastDFS的相关环境,这个不在这里细说,主要说明实现的相关代码。

上传步骤:

1、一定要先创建一个配置文件, 一般为client.conf,配置内容一般为:

tracker_server=192.168.013:22122

1、使用FastDFSClient.java 的工具类来加载配置文件

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

client.conf文件的内容为:tracker_server=192.168.25.133:22122

2.取文件扩展名;

String originalFilename = uploadFile.getOriginalFilename();

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

3、补充完整的url

url = IMAGE_SERVER_URL + url;此处的为在resources.propries中配置的变量,然后在sprngmvc.xml中配置引用

resources.propries中的内容为:IMAGE_SERVER_URL=http://192.168.25.133/

4、封装到map中返回。

Map result = new HashMap<>();

result.put("error", 0);
result.put("url", url);

完整代码如下;

@Controller

public class PictureController{

@vlue("${IMAGE_SEVER_URL}")

private String IMAGE_SERVER_URL;

@RequestMapping(value="/pic/upload", produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8")

@ResponseBody

public String uploadFile(MultipartFile uploadFile) {

try {
//把图片上传的图片服务器
FastDFSClient fastDFSClient = new FastDFSClient("classpath:conf/client.conf");
//取文件扩展名
String originalFilename = uploadFile.getOriginalFilename();
String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
//得到一个图片的地址和文件名
String url = fastDFSClient.uploadFile(uploadFile.getBytes(), extName);
//补充为完整的url
url = IMAGE_SERVER_URL + url;
//封装到map中返回
Map result = new HashMap<>();
result.put("error", 0);
result.put("url", url);
return JsonUtils.objectToJson(result);
} catch (Exception e) {
e.printStackTrace();
Map result = new HashMap<>();
result.put("error", 1);
result.put("message", "图片上传失败");
return JsonUtils.objectToJson(result);
}
}

}

转载地址:https://blog.csdn.net/LM891108647/article/details/72614549 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis的安装和启动
下一篇:Linux下安装zookeeper的步骤

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月03日 16时45分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Sharding-Sphere,Sharding-JDBC_分库分表介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记002 2021-06-29
C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041 2021-06-29
C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042 2021-06-29
C++_类和对象_对象特性_构造函数调用规则---C++语言工作笔记043 2021-06-29
C++_类和对象_对象特性_深拷贝与浅拷贝---C++语言工作笔记044 2021-06-29
AndroidStudio_java.util.ConcurrentModificationException---Android原生开发工作笔记237 2021-06-29
AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238 2021-06-29
弹框没反应使用Looper解决_the caller should invoke Looper.prepare() and Looper.loop()---Android原生开发工作笔记239 2021-06-29
Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067 2021-06-29
AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240 2021-06-29
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045 2021-06-29
AndroidStudio安卓原生开发_UI高级_DrawerLayout_侧滑菜单控件---Android原生开发工作笔记120 2021-06-29
AndroidStudio安卓原生开发_UI高级_Shape的使用_虚线_直线_矩形_渐变_径向渐变_线性渐变_扫描渐变---Android原生开发工作笔记122 2021-06-29
AndroidStudio安卓原生开发_UI高级_StateListDrawable状态选择器_按钮按下和抬起显示不同颜色---Android原生开发工作笔记124 2021-06-29
kivy制作安卓APP--简单音乐播放器 2021-06-29
Angular2工程部署到Tomcat服务器,第一次访问正常,刷新浏览器后报404错误 2021-06-29
【力扣】155. 最小栈 2021-06-29
【力扣】160. 相交链表 2021-06-29
【力扣】167. 两数之和 II - 输入有序数组 2021-06-29
【力扣】168. Excel表列名称 2021-06-29