使用图片服务器FastDFS实现图片上传

本文介绍了如何使用FastDFS服务器进行图片上传。FastDFS由Tracker server和Storage server组成,负责文件上传和下载的调度与存储。文章详细阐述了配置FastDFS环境后的上传步骤,包括创建配置文件、加载配置、获取文件扩展名、补充URL以及使用FastDFSClient上传文件并返回结果。

在工作中我们需要使用一台专门的服务器去管理系统的图片资源,这里介绍一种常用的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);
}
}

}

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值