FastDFS图片服务器java后台的简单调用

工具类:

 1 package com.liveyc.common.fdfs;
 2
 3
 4 import org.apache.commons.io.FilenameUtils;
 5 import org.csource.common.NameValuePair;
 6 import org.csource.fastdfs.ClientGlobal;
 7 import org.csource.fastdfs.StorageClient1;
 8 import org.csource.fastdfs.StorageServer;
 9 import org.csource.fastdfs.TrackerClient;
10 import org.csource.fastdfs.TrackerServer;
11 import org.springframework.core.io.ClassPathResource;
12
13 /**
14  * 上传图片到Fast
15  * @author lx
16  *
17  */
18 public class FastDFSUtils {
19
20     /**
21      * @Description: 上传图片到Fast.
22      * @Title: uploadPic
23      * @author:  xuyou
24      * @date:   2017年12月14日
25      * @param pic 图片二进制
26      * @param name 图片名称
27      * @param size 图片大小
28      * @return
29      */
30     public static String uploadPic(byte[] pic ,String name,long size){
31         String path = null;
32         //ClientGloble 读配置文件
33         ClassPathResource resource = new ClassPathResource("fdfs_client.conf");
34         try {
35             ClientGlobal.init(resource.getClassLoader().getResource("fdfs_client.conf").getPath());
36             //老大客户端
37             TrackerClient trackerClient = new TrackerClient();
38             TrackerServer trackerServer = trackerClient.getConnection();
39             StorageServer storageServer  = null;
40             StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
41             //图片11.jpg  根据图片名称得到图片后缀    jpg
42             String ext = FilenameUtils.getExtension(name);
43
44             NameValuePair[] meta_list = new NameValuePair[3];
45             meta_list[0] = new NameValuePair("fileName",name);
46             meta_list[1] = new NameValuePair("fileExt",ext);
47             meta_list[2] = new NameValuePair("fileSize",String.valueOf(size));
48
49
50             //  group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
51             path = storageClient1.upload_file1(pic, ext, meta_list);
52         } catch (Exception e) {
53             // TODO Auto-generated catch block
54             e.printStackTrace();
55         }
56         return path;
57     }
58 }

service层代码:

 1 package com.liveyc.core.service.product;
 2
 3
 4
 5 import org.springframework.stereotype.Service;
 6
 7 import com.liveyc.common.fdfs.FastDFSUtils;
 8
 9 @Service("uploadService")
10 public class UploadServiceImpl implements UploadService{
11
12
13     //上传图片
14     public String uploadPic(byte[] pic ,String name,long size){
15         return FastDFSUtils.uploadPic(pic, name, size);
16     }
17 }

Controller层代码

1 //图片服务器
2 public static final String IMG_URL = "http://172.16.71.221/";
 1 package com.liveyc.core.controller;
 2
 3
 4 import java.io.IOException;
 5 import java.util.ArrayList;
 6 import java.util.List;
 7 import java.util.Map;
 8 import java.util.Map.Entry;
 9 import java.util.Set;
10
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 import org.json.JSONObject;
15 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.stereotype.Controller;
17 import org.springframework.web.bind.annotation.RequestMapping;
18 import org.springframework.web.bind.annotation.RequestParam;
19 import org.springframework.web.bind.annotation.ResponseBody;
20 import org.springframework.web.multipart.MultipartFile;
21 import org.springframework.web.multipart.MultipartRequest;
22
23 import com.liveyc.common.web.Constants;
24 import com.liveyc.core.service.product.UploadService;
25
26
27 /**
28  * 上传图片
29  * @author lx
30  *
31  */
32 @Controller
33 public class UploadController {
34
35     @Autowired
36     private UploadService uploadService;
37     //上传图片  @RequestParam(required = false 防止为null 抛异常
38     @RequestMapping(value = "/upload/uploadPic.do")
39     public void uploadPic(@RequestParam(required = false) MultipartFile pic
40             ,HttpServletResponse response) throws IOException{
41
42         String path = uploadService.uploadPic(pic.getBytes(), pic.getOriginalFilename(), pic.getSize());
43
44         String url = Constants.IMG_URL + path;
45
46         JSONObject  jo = new JSONObject();
47         jo.put("url", url);
48
49         response.setContentType("application/json;charset=UTF-8");
50         response.getWriter().write(jo.toString());
51
52     }
53
54     //上传多张图片
55     @RequestMapping(value = "/upload/uploadPics.do")
56     public @ResponseBody
57     List<String> uploadPics(@RequestParam(required = false) MultipartFile[] pics
58             ,HttpServletResponse response) throws IOException{
59
60         List<String> urls = new ArrayList<String>();
61
62         for (MultipartFile pic : pics) {
63             String path = uploadService.uploadPic(pic.getBytes(), pic.getOriginalFilename(), pic.getSize());
64             String url = Constants.IMG_URL + path;
65             urls.add(url);
66         }
67         return urls;
68     }
69
70 }

配置文件信息  将此文件放在service层所在项目中   其余不要动也就标红色的地方改下即可

 1 # connect timeout in seconds
 2 # default value is 30s
 3 connect_timeout=30
 4
 5 # network timeout in seconds
 6 # default value is 30s
 7 network_timeout=60
 8
 9 # the base path to store log files
10 base_path=/home/fastdfs
11
12 # tracker_server can ocur more than once, and tracker_server format is
13 #  "host:port", host can be hostname or ip address
14 tracker_server=172.16.71.220:22122
15 #tracker_server=192.168.101.4:22122
16
17 #standard log level as syslog, case insensitive, value list:
18 ### emerg for emergency
19 ### alert
20 ### crit for critical
21 ### error
22 ### warn for warning
23 ### notice
24 ### info
25 ### debug
26 log_level=info
27
28 # if use connection pool
29 # default value is false
30 # since V4.05
31 use_connection_pool = false
32
33 # connections whose the idle time exceeds this time will be closed
34 # unit: second
35 # default value is 3600
36 # since V4.05
37 connection_pool_max_idle_time = 3600
38
39 # if load FastDFS parameters from tracker server
40 # since V4.05
41 # default value is false
42 load_fdfs_parameters_from_tracker=false
43
44 # if use storage ID instead of IP address
45 # same as tracker.conf
46 # valid only when load_fdfs_parameters_from_tracker is false
47 # default value is false
48 # since V4.05
49 use_storage_id = false
50
51 # specify storage ids filename, can use relative or absolute path
52 # same as tracker.conf
53 # valid only when load_fdfs_parameters_from_tracker is false
54 # since V4.05
55 storage_ids_filename = storage_ids.conf
56
57
58 #HTTP settings
59 http.tracker_server_port=80
60
61 #use "#include" directive to include HTTP other settiongs
62 ##include http.conf

xml文件配置

service层

Controller层

jsp:

js

 1 <script type="text/javascript">
 2 //上传图片
 3 function uploadPic(){
 4     //jquery.form.js
 5     var options = {
 6             url : "/upload/uploadPic.do",
 7             dataType : "json",
 8             type : "post",
 9             success : function(data){
10                 $("#allUrl").attr("src",data.url);
11                 $("#imgUrl").val(data.url);
12             }
13     }
14     $("#jvForm").ajaxSubmit(options);
15 }
16 </script>

测试结果:

点击 选择图片以后 会立即把图片上传至fastdfs服务器  同时返回一条url连接

将连接 可在浏览器直接打开

时间: 2024-08-02 15:15:40

FastDFS图片服务器java后台的简单调用的相关文章

FastDFS图片服务器

原文:FastDFS图片服务器 首先要转一个FastDFS,这个很难装.一般由运维人员安装. git项目fastdfs-client-java由happy fish开发的,down下来后import到项目中maven install到本地仓库即可 package com.common.utils; import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; import org.csource

FastDFS图片服务器搭建流程:

FastDFS搭建流程: 第一步:把FastDFS都上传到linux系统(fastdfs-5.09.tar.gz.fastdfs-nginx-module v1.16.tar.gz.libfastcommon-1.0.38.tar.gz) 第二步:安装FastDFS之前,先安装libevent工具包(yum –y install libevent)和perl. Perl安装方法: 1.站下载新版本的源码包: http://www.perl.org/get.html,版本自己选择,我下载的是per

FastDFS图片服务器单机安装步骤

前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcommon 使用的版本: libfastcommon-1.0.41.tar.gz FastDFS 使用的版本: fastdfs-6.01.tar.gz fastdfs-nginx-module 使用的版本:fastdfs-nginx-module-1.21.tar.gz nginx 使用的版本: ngin

电商总结(四)基于共享存储的图片服务器架构

在当前这个互联网的时代,不管何种网站,对图片的需求量越来越大,尤其在电商网站中,几乎都会面临到海量图片资源的存储.访问等相关技术问题.在对图片服务器的架构,扩展,升级的过程中,肯定也会碰到各种各样的问题,各种各样的需求.当然这并不代表,就必须得弄一个特别NB的图片服务架构,简单,高效,稳定就行.所以今天就来总结一个特别简单,高效的图片服务架构:通过共享存储的方式来实现图片服务架构. 然而,也有一些人问我,现在大型网站的图片服务器的架构已经完全不是这样的了,别人家的图片系统,比你这个牛逼多了,为啥

转:Linux下使用Nginx搭建简单图片服务器

最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的,今天再这里简单讲一下Nginx实现上传图片以及图片服务器的大致理念. 如果是个人项目或者企业小项目,仅仅只有十来号人使用的小项目,可以使用如下方案: 用户访问系统,使用上传图片功能,那么图片就上传到你的当前项目所在的tomcat服务器上,在/image下,上传成功后用户可以直接访问 http://ip:port/project/images/xxx.jpg 这样做在用户少的时候是没有问题的 当你的企

【Java/Android性能优 6】Android 图片SD卡缓存 使用简单 支持预取 支持多种缓存算法 支持不同网络类型 支持序列化

本文转自:http://www.trinea.cn/android/android-imagesdcardcache/ 本文主要介绍一个支持图片自动预取.支持多种缓存算法.支持数据保存和恢复的图片Sd卡缓存的使用.功能及网友反馈的常见问题解答. 需要二级缓存或ListView和GridView图片加载请优先使用ImageCache. 与Android LruCache相比主要特性:(1). 使用简单  (2). 轻松获取及预取新图片  (3). 可选择多种缓存算法(FIFO.LIFO.LRU.M

nginx 一二事(1) - 简单图片服务器解决方案

最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的 今天再这里简单讲一下上传图片以及图片服务器的大致理念 如果是个人项目或者企业小项目,仅仅只有十来号人使用的小项目,可以使用如下方案: 用户访问系统,使用上传图片功能,那么图片就上传到你的当前项目所在的tomcat服务器上,在/image下,上传成功后用户可以直接访问 http://ip:port/project/images/xxx.jpg 这样做在用户少的时候是没有问题的 当你的企业发展起来了,业

一、CentOS7下搭建FastDFS+Nginx实现静态图片服务器

在集群环境下,图片存放在本地存在诸多限制,一般采用单独的图片服务器进行管理.FastDFS就是这样一个图片管理服务器. 环境需求,CentOS7下 一.先下载三件套,并上传到服务器中(Nginx自行下载),地址如下 1:libfastcommon https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz 2:fastdfs https://github.com/happyfish100/fastdfs/archive/

java后台调用url

QXOutStream outPut= new QXOutStream(); qxWorkSheetXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); qxWorkSheetXML.append("<ROOT><ROW>"); qxWorkSheetXML.append("<REPORT_MAN>"