使用图片服务器FastDFS实现图片上传
2017-05-21 21:07
645 查看
在工作中我们需要使用一台专门的服务器去管理系统的图片资源,这里介绍一种常用的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);
}
}
}
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);
}
}
}
相关文章推荐
- centos64位中 fastDFS的安装以及nginx反向代理实现搭建图片服务器(三)之图片服务器的使用
- 使用fastdfs实现图片上传
- fastdfs 图片服务器 使用java端作为客户端上传图片
- 使用KindEditor的图片上传功能,实现图片上传到专门的图片服务器。
- “上传图片到服务器”之SWFUpload与imgAreaSelect的使用----实现切图效果
- 使用jersey实现图片上传到另外一台服务器
- Java Springboot结合FastDFS实现文件上传以及根据图片url将图片上传至图片服务器
- 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器
- 使用阿里云服务器(OOS)实现图片上传
- 在easyui的框架中,使用ajax实现批量上传图片到服务器
- 使用Struts2实现图片上传到服务器指定的文件夹中
- fastdfs 图片服务器 使用java端作为客户端上传图片 / 【FastDFS专题】fastdfs使用实战(概念篇)
- iOS使用http post多图片上传带描述+java后台服务器,简单实现例子.
- Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传
- 使用ajax异步回调函数实现服务端图片上传验证
- 使用Jcrop实现图片上传、剪裁和保存(ASP.NET)
- .NET使用swfupload实现图片批量上传
- JSP使用ckfinder实现中文图片上传后,无法显示,主要是tomcat不支持中文路径
- Apache服务器使用.htaccess实现图片防盗链
- 图片上传生成缩略图,并使用JQuery实现鼠标移动到缩略图显示相应的大图的例子