上海 企业 网站建设/爱站网 关键词挖掘
FastDFS提供的三个主要功能
- upload:上传文件
- download:下载文件
- delete:删除文件
一、开发环境准备
1、使用maven从源码安装
mvn clean install
2、使用maven从jar文件安装
mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversion=${version} -Dpackaging=jar -Dfile=fastdfs-client-java-${version}.jar
3、在pom.xml中添加依赖
<dependency><groupId>org.csource</groupId><artifactId>fastdfs-client-java</artifactId><version>1.30-SNAPSHOT</version>
</dependency>
4、配置fdfs_client.conf文件
文件所在位置可以是项目classpath(或OS文件系统目录比如/opt/): /opt/fdfs_client.conf C:\Users\James\config\fdfs_client.conf
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890tracker_server = 10.0.11.247:22122
tracker_server = 10.0.11.248:22122
tracker_server = 10.0.11.249:22122connection_pool.enabled = true
connection_pool.max_count_per_entry = 500
connection_pool.max_idle_time = 3600
connection_pool.max_wait_time_in_ms = 1000
注1:tracker_server指向您自己IP地址和端口,1-n个
注2:除了tracker_server,其它配置项都是可选的
5、在项目中配置 fastdfs-client.properties
fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80fastdfs.tracker_servers = 10.0.11.201:22122,10.0.11.202:22122,10.0.11.203:22122fastdfs.connection_pool.enabled = true
fastdfs.connection_pool.max_count_per_entry = 500
fastdfs.connection_pool.max_idle_time = 3600
fastdfs.connection_pool.max_wait_time_in_ms = 1000
注1:properties 配置文件中属性名跟 conf 配置文件不尽相同,并且统一加前缀"fastdfs.",便于整合到用户项目配置文件
注2:fastdfs.tracker_servers 配置项不能重复属性名,多个 tracker_server 用逗号","隔开
注3:除了fastdfs.tracker_servers,其它配置项都是可选的
二、开发实例
public class FdfsTest {private static final Logger LOGGER = LoggerFactory.getLogger(FdfsTest.class);private static final String CONF_NAME = "fastdfs-client.properties";private StorageClient storageClient;private TrackerServer trackerServer;@Beforepublic void initStorageClient() throws Exception {ClientGlobal.init(CONF_NAME);LOGGER.info("network_timeout=" + ClientGlobal.g_network_timeout + "ms");LOGGER.info("charset=" + ClientGlobal.g_charset);TrackerClient tracker = new TrackerClient();trackerServer = tracker.getTrackerServer();StorageServer storageServer = null;storageClient = new StorageClient(trackerServer, storageServer);}@Afterpublic void closeClient() {LOGGER.info("close connection");if(storageClient != null){try {storageClient.close();}catch (Exception e){e.printStackTrace();}catch (Throwable e){e.printStackTrace();}}}public void writeByteToFile(byte[] fbyte, String fileName) throws IOException {BufferedOutputStream bos = null;FileOutputStream fos = null;File file = new File(fileName);try {fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos);bos.write(fbyte);} catch (Exception e) {e.printStackTrace();} finally {if (bos != null) {bos.close();}if (fos != null) {fos.close();}}}public void upload() throws Exception{NameValuePair[] metaList = new NameValuePair[1];String local_filename = "build.PNG";metaList[0] = new NameValuePair("fileName", local_filename);File file = new File("C:/Users/chengdu/Desktop/build.PNG");InputStream inputStream = new FileInputStream(file);int length = inputStream.available();byte[] bytes = new byte[length];inputStream.read(bytes);String[] result = storageClient.upload_file(bytes, null, metaList);LOGGER.info("result {}", Arrays.asList(result));Assert.assertEquals(2, result.length);}public void download() throws Exception {String[] uploadresult = {"group1", "M00/00/00/J2fL12PVypeAWiGcAAM_gDeWVyw5817085"};byte[] result = storageClient.download_file(uploadresult[0], uploadresult[1]);String local_filename = "commitment.d2f57e10.jpg";writeByteToFile(result, local_filename);File file = new File(local_filename);Assert.assertTrue(file.isFile());}public void testUploadDownload() throws Exception {NameValuePair[] metaList = new NameValuePair[1];String local_filename = "commitment.d2f57e10 (2).jpg";metaList[0] = new NameValuePair("fileName", local_filename);File file = new File("/Users/iyw/Downloads/commitment.d2f57e10 (2).jpg");InputStream inputStream = new FileInputStream(file);int length = inputStream.available();byte[] bytes = new byte[length];inputStream.read(bytes);String[] result = storageClient.upload_file(bytes, null, metaList);//Assert.assertTrue(storageClient.isConnected());// pool testOnborrow isAvaliable// Assert.assertTrue(storageClient.isAvaliable());LOGGER.info("result {}", Arrays.asList(result));byte[] resultbytes = storageClient.download_file(result[0], result[1]);writeByteToFile(resultbytes, local_filename);File downfile = new File(local_filename);Assert.assertTrue(downfile.isFile());}}