介绍
本篇文章给大家分享的是有关如何在Java项目中利用FasfDFS实现一个文件上传下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>一:添加配置文件强>
当完成以上操作之后可以添加链接FastDFS服务器的配置文件fastdfs-client。属性
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 =80 时间=fastdfs.tracker_servers 192.168.1.7:22122
因为项目中只使用属性格式文件,如果需要更多的配置信息,可以查看官方的配置信息
注:1。其他的配置项为可选,fastdfs。tracker_servers为必须选项
,,,,2. 多个tracker_servers可以使用逗号”、“分隔
<强>二:加载配置文件强>
1。测试加载配置文件
@Test public void  initConifg (), throws Exception { ,//加载配置文件, ,ClientGlobal.initByProperties(“配置/fastdfs-client.properties");,,,,,,, ,System.out.println (“ClientGlobal.configInfo ():“, +, ClientGlobal.configInfo ()); }
2。输出结果
ClientGlobal.configInfo (): { ,g_connect_timeout (ms),=5000 ,g_network_timeout (ms),=30000 g_charset =, utf - 8 ,g_anti_steal_token =false=,g_secret_key  FastDFS1234567890 g_tracker_http_port =, 80=,trackerServers  192.168.1.7:22122 }
当出现上面和配置文件一致的输出结果时候,说明加载配置文件已经成功。
<强>三:功能实现强>
由于是使用Junit做测试,为了方便在开始执行之前,初始化配置文件和获取连接,同时没有捕获异常全部抛出
<强> 1。初始化连接信息强>
//成员变量 TrackerServer TrackerServer =,空; StorageServer StorageServer =,空; StorageClient StorageClient =,空;/* * ,*初始化连接信息 ,* @author: wrh55 ,* @date:, 2017年8月5日下午8:08:57 ,*/@Before public void  init (), throws Exception {//,才能加载配置文件 ClientGlobal.initByProperties才能(“配置/fastdfs-client.properties");//,才能获取连接 TrackerClient 才能;TrackerClient =, new TrackerClient (); 时间=trackerServer 才能;trackerClient.getConnection (); 时间=storageClient 才能;new StorageClient (storageServer trackerServer也); }
注:,如果出现连接超时异常:java.net.SocketTimeoutException:连接超时
,,,,1 .查看服务器地址和端口是否正确
,,,,2 .请查看服务器TrackerServer和StorageServer服务端口是否开启。默认为22122年和23000年
<强> 2。上传文件强>
/* * ,*上传图片 ,* @throws 例外 ,* @author: wrh55 ,* @date:, 2017年8月5日下午7:09:23 ,*/@Test public void  uploadFileOfByte (), throws Exception { ,//获取文件字节信息=,,file  new 文件(“src/测试/资源/图片/Ace.jpg"); ,FileInputStream inputStream =, new FileInputStream(文件); ,byte [], file_buff =, new 字节((int), file.length ()); ,read (file_buff); ,//获取文件扩展名 ,String fileName =, file.getName (); ,String extName =,空; ,if (fileName.contains (“!”)), { 时间=extName 才能;fileName.substring (fileName.lastIndexOf (“!”), +, 1); ,}else { 返回才能; ,} ,//图片元数据,如果设置为空,那么服务器上不会生成- m的原数据文件 ,NameValuePair [], meta_list =, new NameValuePair [2]; ,meta_list [0],=, new NameValuePair (“fileName",,“测试专用“); ,meta_list [1],=, new NameValuePair (“length",,“测试专用“); ,//文件上传,返回组名和访问地址 ,String [] upload_file =, storageClient.upload_file (file_buff, extName,, meta_list); ,System.out.println (arrays . aslist (upload_file)); }
下面是执行结果
已经将图片上传到服务器,同时返回了图片地址。那么通过这个地址试试能否访问