├── .gitignore
├── pom.xml
└── src
├── main
├── java
│ └── net
│ │ └── mikesu
│ │ └── fastdfs
│ │ ├── FastdfsClient.java
│ │ ├── FastdfsClientConfig.java
│ │ ├── FastdfsClientFactory.java
│ │ ├── FastdfsClientImpl.java
│ │ ├── client
│ │ ├── StorageClient.java
│ │ ├── StorageClientFactory.java
│ │ ├── StorageClientImpl.java
│ │ ├── TrackerClient.java
│ │ ├── TrackerClientFactory.java
│ │ └── TrackerClientImpl.java
│ │ ├── command
│ │ ├── AbstractCmd.java
│ │ ├── CloseCmd.java
│ │ ├── Command.java
│ │ ├── DeleteCmd.java
│ │ ├── GetMetaDataCmd.java
│ │ ├── GroupInfoCmd.java
│ │ ├── QueryDownloadCmd.java
│ │ ├── QueryUpdateCmd.java
│ │ ├── QueryUploadCmd.java
│ │ ├── SetMetaDataCmd.java
│ │ ├── StorageInfoCmd.java
│ │ └── UploadCmd.java
│ │ ├── data
│ │ ├── GroupInfo.java
│ │ ├── Result.java
│ │ ├── StorageInfo.java
│ │ └── UploadStorage.java
│ │ └── exception
│ │ └── FastdfsIOException.java
└── resources
│ └── FastdfsClient.properties
└── test
├── java
└── net
│ └── mikesu
│ └── fastdfs
│ ├── FastdfsClientConfigTest.java
│ ├── FastdfsClientTest.java
│ └── client
│ └── TrackerClientTest.java
└── resources
├── FastdfsClient.properties
└── Koala.jpg
/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /.project
3 | /.settings
4 | /.classpath
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | net.mikesu
5 | FastdfsClient
6 | 0.0.1-SNAPSHOT
7 | FastDFS Java Client
8 |
9 |
10 |
11 | maven-compiler-plugin
12 | 3.1
13 |
14 | 1.7
15 | 1.7
16 |
17 |
18 |
19 |
20 |
21 |
22 | org.apache.commons
23 | commons-pool2
24 | 2.2
25 |
26 |
27 | org.slf4j
28 | slf4j-api
29 | 1.7.5
30 |
31 |
32 | commons-configuration
33 | commons-configuration
34 | 1.10
35 |
36 |
37 | junit
38 | junit
39 | 4.11
40 | test
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/main/java/net/mikesu/fastdfs/FastdfsClient.java:
--------------------------------------------------------------------------------
1 | package net.mikesu.fastdfs;
2 |
3 | import java.io.File;
4 | import java.util.Map;
5 |
6 | public interface FastdfsClient {
7 |
8 | public String upload(File file) throws Exception;
9 | public String upload(File file,String fileName) throws Exception;
10 | public String getUrl(String fileId) throws Exception;
11 | public Boolean setMeta(String fileId,Map meta) throws Exception;
12 | public Map getMeta(String fileId) throws Exception;
13 | public Boolean delete(String fileId) throws Exception;
14 | public void close();
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/net/mikesu/fastdfs/FastdfsClientConfig.java:
--------------------------------------------------------------------------------
1 | package net.mikesu.fastdfs;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import org.apache.commons.configuration.Configuration;
7 | import org.apache.commons.configuration.ConfigurationException;
8 | import org.apache.commons.configuration.PropertiesConfiguration;
9 | import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
10 |
11 | public class FastdfsClientConfig {
12 |
13 | public static final int DEFAULT_CONNECT_TIMEOUT = 5; // second
14 | public static final int DEFAULT_NETWORK_TIMEOUT = 30; // second
15 |
16 | private int connectTimeout = DEFAULT_CONNECT_TIMEOUT * 1000;
17 | private int networkTimeout = DEFAULT_NETWORK_TIMEOUT * 1000;
18 | private List trackerAddrs = new ArrayList();
19 | // private int trackerClientPoolMaxIdlePerKey =
20 |
21 | public FastdfsClientConfig() {
22 | super();
23 | // TODO Auto-generated constructor stub
24 | }
25 |
26 | public FastdfsClientConfig(String configFile) throws ConfigurationException {
27 | super();
28 | // String conf = FastdfsClientConfig.class.getClassLoader().getResource(configFile).getPath();
29 | Configuration config = new PropertiesConfiguration(configFile);
30 | this.connectTimeout = config.getInt("connect_timeout", DEFAULT_CONNECT_TIMEOUT)*1000;
31 | this.networkTimeout = config.getInt("network_timeout", DEFAULT_NETWORK_TIMEOUT)*1000;
32 | List