- 浏览: 334737 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道lvyua ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道lvyuan1234 写道怎么一直报 ...
java解析mp3工具 -
lvyuan1234:
lvyuan1234 写道怎么一直报找不到文件?找到原因了,e ...
java解析mp3工具 -
lvyuan1234:
怎么一直报找不到文件?
java解析mp3工具 -
Cy0941:
...
org.apache.catalina.connector.RequestFacade cannot be cast to org.springframewor
先引用一下FastDFS的介绍:
FastDFS is an open source high performance distributed file system. It's major functions include: file storing, file syncing and file accessing (file uploading and file downloading), and it can resolve the high capacity and load balancing problem. FastDFS should meet the requirement of the website whose service based on files such as photo sharing site and vidio sharing site.
FastDFS has two roles: tracker and storage. The tracker takes charge of scheduling and load balancing for file access. The storage store files and it's function is file management including: file storing, file syncing, providing file access interface. It also manage the meta data which are attributes representing as key value pair of the file. For example: width=1024, the key is "width" and the value is "1024".
开始安装:
1. 在http://code.google.com/p/fastdfs/downloads/list下载所需文件,此外还需先安装好libevent
2. tar xzf FastDFS_v2.11.tar.gz
3. cd FastDFS
如果支持HTTP, vi make.sh, 使用/WITH_HTTPD查找到这一行,输入i进入编辑模式,删除掉前面的注释#,:wq保存退出,如果需要安装成服务,则把下面一行也解开
./make.sh
./make.sh install
4. 使用netstat -an | grep 端口号, 找几个空闲的端口
5. 根据实际情况修改/etc/fdfs下的配置文件,每个上面都有注释说明,如果需要HTTP,别忘了解开最下面的#include http.conf,要带一个#
6. 启动tracker: /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
7. 启动storage: /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf如果出现错误,可以到步骤5修改配置文件时设置的目录的log目录下查看具体错误原因,我就是因为多删了一#导致变量无法导入,总是空.
8. 到此安装配置完毕
上传文件:/usr/local/bin/fdfs_upload_file <config_file> <local_filename>
下载文件:/usr/local/bin/fdfs_download_file <config_file> <file_id> [local_filename]
删除文件:/usr/local/bin/fdfs_delete_file <config_file> <file_id>
monitor: /usr/local/bin/fdfs_monitor /etc/fdfs/client.conf
关闭:
killall fdfs_trackerd
killall fdfs_storaged
或
/usr/local/bin/stop.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
重启:
/usr/local/bin/restart.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/local/bin/restart.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
9.java client
上传
package com.gary.test; import java.io.File; import java.io.FileInputStream; import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; 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; /** * 测试上传 * @author gary * */ public class TestUpload { public static void main(String[] args) throws Exception{ String classPath = new File(TestUpload.class.getResource("/").getFile()).getCanonicalPath(); String configFilePath = classPath + File.separator + "fdfs_client.conf"; System.out.println("配置文件:" + configFilePath); ClientGlobal.init(configFilePath); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); 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", "gary"); // byte[] file_buff = "F:\\pic.jpg".getBytes(ClientGlobal.g_charset); File file = new File("F:\\pic.jpg"); FileInputStream fis = new FileInputStream(file); byte[] file_buff = null; if(fis != null){ int len = fis.available(); file_buff = new byte[len]; fis.read(file_buff); } System.out.println("file length: " + file_buff.length); String group_name = null; StorageServer[] storageServers = trackerClient.getStoreStorages(trackerServer, group_name); if (storageServers == null) { System.err.println("get store storage servers fail, error code: " + storageClient.getErrorCode()); }else{ System.err.println("store storage servers count: " + storageServers.length); for (int k = 0; k < storageServers.length; k++){ System.err.println(k + 1 + ". " + storageServers[k].getInetSocketAddress().getAddress().getHostAddress() + ":" + storageServers[k].getInetSocketAddress().getPort()); } System.err.println(""); } long startTime = System.currentTimeMillis(); String[] results = storageClient.upload_file(file_buff, "jpg", meta_list); System.out.println("upload_file time used: " + (System.currentTimeMillis() - startTime) + " ms"); if (results == null){ System.err.println("upload file fail, error code: " + storageClient.getErrorCode()); return; } group_name = results[0]; String remote_filename = results[1]; System.err.println("group_name: " + group_name + ", remote_filename: " + remote_filename); System.err.println(storageClient.get_file_info(group_name, remote_filename)); ServerInfo[] servers = trackerClient.getFetchStorages(trackerServer, group_name, remote_filename); if (servers == null){ System.err.println("get storage servers fail, error code: " + trackerClient.getErrorCode()); } else { System.err.println("storage servers count: " + servers.length); for (int k = 0; k < servers.length; k++){ System.err.println(k + 1 + ". " + servers[k].getIpAddr() + ":" + servers[k].getPort()); } System.err.println(""); } } }
console输出:
配置文件:D:\AEclipse2\workspace\myeclipse\testFastDFS\bin\fdfs_client.conf file length: 10 store storage servers count: 1 1. 192.168.49.130:23000 upload_file time used: 29 ms group_name: group1, remote_filename: M00/00/00/wKgxgk5HbLvfP86RAAAAChd9X1Y736.jpg source_ip_addr = 192.168.49.130, file_size = 10, create_timestamp = 2011-08-14 14:35:39, crc32 = 394092374 storage servers count: 1 1. 192.168.49.130:23000
上传成功后可以打开浏览器使用http方式访问此文件,ip+port+group+filename,
例如 http://192.168.49.130:8001/group1/M00/00/00/wKgxgk5HcFCwvS9QAAANWIusP08057.jpg
获取文件信息
package com.gary.test; import java.io.File; import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.FileInfo; import org.csource.fastdfs.StorageClient; import org.csource.fastdfs.StorageServer; import org.csource.fastdfs.TrackerClient; import org.csource.fastdfs.TrackerServer; /** * 获取文件信息 * @author gary * */ public class TestGet { public static void main(String[] args) throws Exception { String classPath = new File(TestGet.class.getResource("/").getFile()).getCanonicalPath(); String configFilePath = classPath + File.separator + "fdfs_client.conf"; ClientGlobal.init(configFilePath); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); String group_name = "group1"; String remote_filename = "M00/00/00/wKgxgk5HcFCwvS9QAAANWIusP08057.jpg"; FileInfo fi = storageClient.get_file_info(group_name, remote_filename); String sourceIpAddr = fi.getSourceIpAddr(); long size = fi.getFileSize(); System.out.println("ip:" + sourceIpAddr + ",size:" + size); } }
console输出
ip:192.168.49.130,size:3416
删除
package com.gary.test; import java.io.File; import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.StorageClient; import org.csource.fastdfs.StorageServer; import org.csource.fastdfs.TrackerClient; import org.csource.fastdfs.TrackerServer; /** * 删除文件 * @author gary * */ public class TestDelete { public static void main(String[] args) throws Exception { String classPath = new File(TestDelete.class.getResource("/").getFile()).getCanonicalPath(); String configFilePath = classPath + File.separator + "fdfs_client.conf"; ClientGlobal.init(configFilePath); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); String group_name = "group1"; String remote_filename = "M00/00/00/wKgxgk5HbLvfP86RAAAAChd9X1Y736.jpg"; storageClient.delete_file(group_name, remote_filename); System.out.println("删除成功"); } }
附件为配置文件和myeclipse项目源代码
评论
我也是上传报这个错误。。。。求解
为什么删除不了呢?求解
发表评论
-
解决activiti生成的PNG乱码
2012-02-01 11:26 3271使用的版本为activiti5.8 修改org.act ... -
tomcat启动报错Socket accept failed
2011-08-11 21:11 5334tomcat启动时,报错如下: 2011-8-11 2 ... -
URL工具类
2011-05-11 23:21 2836package ssh.util; import jav ... -
HTML工具类
2011-05-11 23:19 1388package ssh.util; import ... -
利用Spring AOP记录Hibernate统计信息
2011-03-19 08:41 1727在Hibernate的属性里设置hibernate.gener ... -
搭建liferay-portal6.0.6
2011-03-09 19:48 2909首先在http://sourceforge.net/proje ... -
Quartz在Spring中的使用
2011-03-08 17:43 2168Quartz项目主页http://www.quartz-sch ... -
使用httpclient模拟表单提交
2011-01-31 22:19 15457文件类型使用FileBody,字符串类型使用StringBod ... -
懒人专用,方便调试:反射生成hibernate映射类的toString方法
2011-01-04 21:28 1574...不知道有没有和我一样懒的,表的列太多,一个一个弄太麻烦, ... -
用junit测试SSH项目以及常见错误解决方法
2011-01-01 21:42 3325public static BeanFactory f ... -
log4j配置详解,附带hibernate
2010-12-31 18:53 9200log4j.properties # For JBoss: ... -
导入导出Excel工具,支持XML和properties配置(二)
2010-12-25 08:49 2372XMLUtil.java package ssh.ut ... -
导入导出Excel工具,支持XML和properties配置(一)
2010-12-25 08:46 2404需要jxl.jar,dom4j.jar JXLUtil.j ... -
java读取rss
2010-12-24 13:51 5111用到的jar包为jdom.jar, rome-1.0.jar( ... -
log4j:ERROR LogMananger.repositorySelector was null
2010-12-23 15:32 1510排除log4j版本问题后,仍出现此问题,解决方法:设置org. ... -
log4j.properties配置文件模板
2010-12-23 10:36 1551# For JBoss: Avoid to setup ...
相关推荐
**FastDFS简介** FastDFS是一个开源的高性能、轻量级的分布式文件系统,它对文件进行管理,包括文件存储、...了解并熟练掌握FastDFS的安装、配置、使用以及与Java的集成,对于提升系统的稳定性和扩展性具有重要意义。
通过以上步骤,你已经在Linux环境中成功安装并配置了FastDFS,同时了解了如何使用Java客户端进行文件上传。在实际生产环境中,你可能还需要考虑负载均衡、容灾备份、监控告警等高级功能,以确保系统的稳定性和高可用...
`mod_fastdfs.conf`是FastDFS的模块配置文件,它定义了FastDFS与Nginx之间的交互方式。其中,`group1--group2`表示至少有两个存储组,每个组由若干个Storage服务器构成,提供冗余和负载均衡。在配置文件中,你需要...
总的来说,FastDFS客户端Java版是Java开发者与FastDFS服务交互的重要工具,它的使用涉及到项目构建配置、网络通信以及文件操作等多个方面。在开发过程中,理解并正确配置这个客户端是确保项目能够正常运行的关键。
在Java应用中使用FastDFS,需要引入FastDFS的Java客户端库。这个Demo中可能包含了FastDFS的Java SDK,用于文件上传和下载操作。 1. **引入依赖**:将FastDFS的Java客户端库加入到项目类路径,如果是Maven项目,可以...
2. **fastdfs-client-java-1.27-SNAPSHOT.pom**:这是Maven项目的依赖配置文件,包含了该库的依赖关系和版本信息。如果项目使用Maven构建,可以通过引入这个POM文件来管理FastDFS客户端的依赖,确保与其他库的兼容性...
使用`fastdfs-client-java`时,首先需要在项目中引入`fastdfs-client-java-1.29-SNAPSHOT.jar`和`commons-io-2.4.jar`这两个依赖库,然后根据`fdfs_client.conf`配置客户端,并通过`FastDFSClient`类提供的API进行...
本示例代码将帮助开发者理解如何使用Java与FastDFS进行交互。 在Java中,我们通常会使用FastDFS的Java客户端来实现文件的上传和下载。首先,你需要在项目中引入FastDFS的Java客户端库。这可以通过Maven或Gradle的...
1. **fastdfs-client-java-1.27-SNAPSHOT.jar**:这是FastDFS Java客户端的核心库文件,包含了所有与FastDFS交互的API和实现。开发人员可以通过引入这个JAR包,调用其提供的接口来完成文件的上传、下载、查询等操作...
《FastDFS客户端Java库1.27版...总之,FastDFS客户端Java库1.27版为Java开发者提供了一个便捷、高效的与FastDFS服务器交互的工具,结合源码阅读,开发者可以更深入地理解和定制化使用,以满足多样化的文件存储需求。
- FastDFS可以在CentOS 7环境下安装配置。在新版的FastDFS(如5.0.5版本)中,若安装后访问没有反应(例如8099端口),需要查看日志文件(error.log)来诊断问题。根据日志提示,如果发现缺少支持多组的配置,应在/...
1. **安装与配置**:包括FastDFS服务器端的安装、配置以及启动,客户端Java库的引入和配置。 2. **连接管理**:理解和使用FastDFS的连接池,有效地管理和复用连接,以提高系统性能。 3. **文件上传**:通过Java ...
至此,您已经完成了FastDFS在Centos7上的安装及配置,包括libfastcommon、FastDFS本身以及fastdfs-nginx-module和Nginx等必要组件的安装与配置。通过以上步骤,您可以构建起一个稳定且高效的数据存储与分发系统。
在IT行业中,FastDFS是一个轻量级的分布式...总之,`fastdfs-client-java`库为Java开发者提供了方便的接口,以与FastDFS分布式文件系统交互。理解其工作原理和API使用方式,可以帮助我们高效地处理文件存储和管理任务。
使用FastDFS客户端Java库时,开发者需要配置FastDFS服务器的地址和相关参数,然后可以通过API调用来执行以下操作: 1. 文件上传:将本地文件上传到FastDFS服务器,返回文件ID。 2. 文件下载:根据文件ID从FastDFS...
**FastDFS配置** 1. **tracker服务配置**:`tracker.conf`主要配置监听端口、日志路径等。 2. **storage服务配置**:`storage.conf`包含存储路径、组名、数据和元数据的存储策略等。 3. **连接池配置**:如果使用...