亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java fastdfs客戶端使用實例代碼

2024-07-13 10:17:30
字體:
來源:轉載
供稿:網友

本文研究的主要是java fastdfs客戶端使用實例的相關內容,具體實現如下。

什么是FastDFS?

FastDFS是用c語言編寫的一款開源的分布式文件系統。FastDFS為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。

FastDFS架構

FastDFS架構包括 Tracker server和Storage server??蛻舳苏埱骉racker server進行文件上傳、下載,通過Tracker server調度最終由Storage server完成文件上傳和下載。Tracker server作用是負載均衡和調度,通過Tracker server在文件上傳時可以根據一些策略找到Storage server提供文件上傳服務??梢詫racker稱為追蹤服務器或調度服務器。Storage server作用是文件存儲,客戶端上傳的文件最終存儲在Storage服務器上,Storage server沒有實現自己的文件系統而是利用操作系統 的文件系統來管理文件??梢詫torage稱為存儲服務器。

fastdfs,java客戶端,fastdfs整合java代碼,java,實例

實例

一、創建一個maven的webproject,叫

file-manager:mvnarchetype:create-DgroupId=platform.activity.filemanager-DartifactId=file-manager-DarchetypeArtifactId=maven-archetype-webapp

二、定義一個fastDFS的客戶端文件fdfs_client.conf:

class="properties" name="code">connect_timeout = 2network_timeout = 30charset = UTF-8http.tracker_http_port = 8080http.anti_steal_token = nohttp.secret_key = FastDFS1234567890tracker_server = 192.168.1.156:22122#tracker_server = 192.168.1.188:22122#storage_server = 192.168.1.155:23000 #no need here

三、定義一個配置接口:

package com.chuanliu.platform.activity.fm.manager;import java.io.Serializable;public interface FileManagerConfig extends Serializable { public static final String FILE_DEFAULT_WIDTH   = "120"; public static final String FILE_DEFAULT_HEIGHT   = "120"; public static final String FILE_DEFAULT_AUTHOR   = "Diandi"; public static final String PROTOCOL = "http://"; public static final String SEPARATOR = "/"; public static final String TRACKER_NGNIX_PORT   = "8080"; public static final String CLIENT_CONFIG_FILE  = "fdfs_client.conf"; }

四、封裝一個FastDFS文件Bean

package com.chuanliu.platform.activity.fm.manager;public class FastDFSFile implements FileManagerConfig { private static final long serialVersionUID = -996760121932438618L; private String name; private byte[] content; private String ext; private String height = FILE_DEFAULT_HEIGHT; private String width = FILE_DEFAULT_WIDTH; private String author = FILE_DEFAULT_AUTHOR; public FastDFSFile(String name, byte[] content, String ext, String height,String width, String author) {  super();  this.name = name;  this.content = content;  this.ext = ext;  this.height = height;  this.width = width;  this.author = author; } public FastDFSFile(String name, byte[] content, String ext) {  super();  this.name = name;  this.content = content;  this.ext = ext; } public byte[] getContent() {  return content; } public void setContent(byte[] content) {  this.content = content; } public String getExt() {  return ext; } public void setExt(String ext) {  this.ext = ext; } public String getHeight() {  return height; } public void setHeight(String height) {  this.height = height; } public String getWidth() {  return width; } public void setWidth(String width) {  this.width = width; } public String getAuthor() {  return author; } public void setAuthor(String author) {  this.author = author; } public String getName() {  return name; } public void setName(String name) {  this.name = name; } }

五、定義核心的FileManager類,里面包含有上傳、刪除、獲取文件的方法:

package com.chuanliu.platform.activity.fm.manager;import java.io.File;import java.io.IOException;import org.apache.log4j.Logger;import org.csource.common.NameValuePair;import org.csource.fastdfs.ClientGlobal;import org.csource.fastdfs.FileInfo;import org.csource.fastdfs.ServerInfo;import org.csource.fastdfs.StorageClient;import org.csource.fastdfs.StorageServer;import org.csource.fastdfs.TrackerClient;import org.csource.fastdfs.TrackerServer;import com.chuanliu.platform.activity.basic.util.LoggerUtils;public class FileManager implements FileManagerConfig {	private static final long serialVersionUID = 1L;	private static Logger logger = Logger.getLogger(FileManager.class);	private static TrackerClient trackerClient;	private static TrackerServer trackerServer;	private static StorageServer storageServer;	private static StorageClient storageClient;	static {		// Initialize Fast DFS Client configurations		try {			String classPath = new File(FileManager.class.getResource("/").getFile()).getCanonicalPath();			String fdfsClientConfigFilePath = classPath + File.separator + CLIENT_CONFIG_FILE;			logger.info("Fast DFS configuration file path:" + fdfsClientConfigFilePath);			ClientGlobal.init(fdfsClientConfigFilePath);			trackerClient = new TrackerClient();			trackerServer = trackerClient.getConnection();			storageClient = new StorageClient(trackerServer, storageServer);		}		catch (Exception e) {			LoggerUtils.error(logger, e);		}	}	public static String upload(FastDFSFile file) {		LoggerUtils.info(logger, "File Name: " + file.getName() + "File Length: " + file.getContent().length);		NameValuePair[] meta_list = new NameValuePair[3];		meta_list[0] = new NameValuePair("width", "120");		meta_list[1] = new NameValuePair("heigth", "120");		meta_list[2] = new NameValuePair("author", "Diandi");		long startTime = System.currentTimeMillis();		String[] uploadResults = null;		try {			uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);		}		catch (IOException e) {			logger.error("IO Exception when uploadind the file: " + file.getName(), e);		}		catch (Exception e) {			logger.error("Non IO Exception when uploadind the file: " + file.getName(), e);		}		logger.info("upload_file time used: " + (System.currentTimeMillis() - startTime) + " ms");		if (uploadResults == null) {			LoggerUtils.error(logger, "upload file fail, error code: " + storageClient.getErrorCode());		}		String groupName     = uploadResults[0];		String remoteFileName  = uploadResults[1];		String fileAbsolutePath = PROTOCOL + trackerServer.getInetSocketAddress().getHostName() 		    + SEPARATOR		    + TRACKER_NGNIX_PORT		    + SEPARATOR 		    + groupName 		    + SEPARATOR 		    + remoteFileName;		LoggerUtils.info(logger, "upload file successfully!!! " +"group_name: " + groupName + ", remoteFileName:"		    + " " + remoteFileName);		return fileAbsolutePath;	}	public static FileInfo getFile(String groupName, String remoteFileName) {		try {			return storageClient.get_file_info(groupName, remoteFileName);		}		catch (IOException e) {			logger.error("IO Exception: Get File from Fast DFS failed", e);		}		catch (Exception e) {			logger.error("Non IO Exception: Get File from Fast DFS failed", e);		}		return null;	}	public static void deleteFile(String groupName, String remoteFileName) throws Exception {		storageClient.delete_file(groupName, remoteFileName);	}	public static StorageServer[] getStoreStorages(String groupName) throws IOException {		return trackerClient.getStoreStorages(trackerServer, groupName);	}	public static ServerInfo[] getFetchStorages(String groupName, String remoteFileName) throws IOException {		return trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName);	}}

六、Unit Test測試類

package manager;import java.io.File;import java.io.FileInputStream;import org.csource.fastdfs.FileInfo;import org.csource.fastdfs.ServerInfo;import org.csource.fastdfs.StorageServer;import org.junit.Test;import org.springframework.util.Assert;import com.chuanliu.platform.activity.fm.manager.FastDFSFile;import com.chuanliu.platform.activity.fm.manager.FileManager;/** * @author Josh Wang(Sheng) * * @email josh_wang23@hotmail.com */public class TestFileManager {	@Test	 public void upload() throws Exception {		File content = new File("C://520.jpg");		FileInputStream fis = new FileInputStream(content);		byte[] file_buff = null;		if (fis != null) {			int len = fis.available();			file_buff = new byte[len];			fis.read(file_buff);		}		FastDFSFile file = new FastDFSFile("520", file_buff, "jpg");		String fileAbsolutePath = FileManager.upload(file);		System.out.println(fileAbsolutePath);		fis.close();	}	@Test	 public void getFile() throws Exception {		FileInfo file = FileManager.getFile("group1", "M00/00/00/wKgBm1N1-CiANRLmAABygPyzdlw073.jpg");		Assert.notNull(file);		String sourceIpAddr = file.getSourceIpAddr();		long size = file.getFileSize();		System.out.println("ip:" + sourceIpAddr + ",size:" + size);	}	@Test	 public void getStorageServer() throws Exception {		StorageServer[] ss = FileManager.getStoreStorages("group1");		Assert.notNull(ss);		for (int k = 0; k < ss.length; k++){			System.err.println(k + 1 + ". " + ss[k].getInetSocketAddress().getAddress().getHostAddress() + ":" + ss[k].getInetSocketAddress().getPort());		}	}	@Test	 public void getFetchStorages() throws Exception {		ServerInfo[] servers = FileManager.getFetchStorages("group1", "M00/00/00/wKgBm1N1-CiANRLmAABygPyzdlw073.jpg");		Assert.notNull(servers);		for (int k = 0; k < servers.length; k++) {			System.err.println(k + 1 + ". " + servers[k].getIpAddr() + ":" + servers[k].getPort());		}	}}

總結

以上就是本文關于java fastdfs客戶端使用實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人久久一区二区三区| 91最新国产视频| 国产精品99久久99久久久二8| 欧美精品久久久久久久免费观看| 久久夜色撩人精品| 亚洲剧情一区二区| 久久精品国产亚洲一区二区| 91国产美女在线观看| 亚洲视频精品在线| 欧美大全免费观看电视剧大泉洋| 亚洲国产精品一区二区三区| 欧美限制级电影在线观看| 国产欧美欧洲在线观看| 亚洲精品理论电影| 日韩av免费看网站| 国产91色在线播放| 91精品91久久久久久| 日本精品va在线观看| 国产午夜精品全部视频在线播放| 欧美精品在线看| 成人精品一区二区三区电影黑人| 91wwwcom在线观看| 亚洲第一天堂无码专区| 日本高清视频精品| 国产欧美日韩中文字幕在线| 国产91九色视频| 97在线看免费观看视频在线观看| 日韩av在线影院| 欧美激情精品久久久久久| 5278欧美一区二区三区| 国产精品日韩av| 久久成人亚洲精品| 日韩av影院在线观看| www.日韩.com| 超碰日本道色综合久久综合| 粗暴蹂躏中文一区二区三区| 久久久精品国产亚洲| 亚洲精品国产品国语在线| 亚洲国产精品成人一区二区| 欧美成人午夜激情视频| 一区二区三区视频免费在线观看| 国产成人精品日本亚洲| 亚洲综合在线中文字幕| 国产精品三级美女白浆呻吟| 亚洲福利在线视频| 91极品视频在线| 韩国一区二区电影| 精品视频在线播放色网色视频| 欧美三级免费观看| 亚洲国产精彩中文乱码av在线播放| 97视频com| 91欧美精品午夜性色福利在线| 爱福利视频一区| 欧美一区二三区| 亲子乱一区二区三区电影| 欧美国产日韩一区二区在线观看| www日韩中文字幕在线看| 欧美一级在线播放| 日韩在线观看你懂的| 欧美日韩一区二区免费视频| 国产91网红主播在线观看| 欧美一区二区色| 国产精品久久久久久av下载红粉| 精品电影在线观看| 日韩久久精品电影| 亚洲精品网站在线播放gif| 亚洲欧美日韩图片| 国产美女直播视频一区| 亚洲激情视频网| 国产欧美久久一区二区| 中文字幕一区二区三区电影| 精品中文字幕久久久久久| 亚洲女人天堂视频| 91精品国产综合久久久久久久久| 久久精品视频免费播放| 亚洲午夜精品久久久久久性色| 国产美女久久精品香蕉69| 精品国产91久久久| 亚洲国产精品久久久久秋霞不卡| 亚洲最新av在线| 97精品视频在线播放| 久久人人爽国产| 成人性生交大片免费观看嘿嘿视频| 国产亚洲激情视频在线| 高清欧美性猛交| 自拍偷拍亚洲区| 国产精品夜间视频香蕉| 91美女片黄在线观| 精品国产一区久久久| 亚洲欧洲日本专区| 欧美富婆性猛交| 久久综合久久美利坚合众国| 久久精品中文字幕一区| 午夜伦理精品一区| 中文字幕亚洲无线码a| 日韩成人在线播放| 亚洲视频国产视频| 孩xxxx性bbbb欧美| 日韩视频中文字幕| 欧美激情三级免费| 久久69精品久久久久久久电影好| 高清一区二区三区日本久| 成人伊人精品色xxxx视频| 亚洲在线免费视频| 国产欧美一区二区三区在线| 国产91在线播放九色快色| 国产美女被下药99| 欧美国产日韩一区二区三区| 欧美激情在线一区| 欧美猛男性生活免费| 国产精品高清网站| 亚洲欧美一区二区精品久久久| 欧美高清无遮挡| 欧美性少妇18aaaa视频| 久久久久久久久久婷婷| 大伊人狠狠躁夜夜躁av一区| 亚洲天堂网在线观看| 亚洲福利影片在线| 性日韩欧美在线视频| 亚洲国产精品中文| 国产丝袜视频一区| 亚洲一品av免费观看| 国产97在线亚洲| 久久天天躁狠狠躁夜夜av| 国产精品自产拍高潮在线观看| 久久久999国产精品| 日本一区二区三区在线播放| 日本精品va在线观看| 伊人一区二区三区久久精品| 亚洲人成电影网站色www| 亚洲图片欧洲图片av| 一区二区三区四区视频| 亚洲女人天堂色在线7777| 国产福利精品av综合导导航| 日韩av网址在线观看| 日韩免费在线播放| 成人激情在线观看| 中文字幕欧美精品日韩中文字幕| 永久免费看mv网站入口亚洲| 成人午夜在线观看| 欧美激情2020午夜免费观看| 97在线视频免费| 亚洲欧洲在线免费| 精品国产一区二区在线| 国产精品香蕉在线观看| 欧美老少做受xxxx高潮| 日韩av电影免费观看高清| 日韩亚洲成人av在线| 亚洲女人天堂色在线7777| 欧美野外猛男的大粗鳮| 日韩精品极品毛片系列视频| 国产精品久久久久久久av电影| 国产在线视频2019最新视频| 一色桃子一区二区| 久热在线中文字幕色999舞| 国产欧美一区二区三区四区| 亚洲成色999久久网站| 国产精品美女在线观看| 亚洲精品福利免费在线观看| 久久久久久久久久久人体| 国产一区二区三区高清在线观看| 亚洲激情视频网站| 日韩精品视频三区| 久久精品亚洲94久久精品|