温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中怎么对FastDFS进行操作

发布时间:2021-07-01 15:36:07 来源:亿速云 阅读:273 作者:Leah 栏目:大数据

Java中怎么对FastDFS进行操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

如果要想使用Java操作fastdfs那么需要首先取得可以操作它的程序包,本次使用的fastdfs开发包的版本为:fastdfs_client_v1.20.jar,同时为了方便配置,一般情况下在开发fastdfs的时候都会配置有一个专门的客户端的配置文件,那么一般这个配置文件都会保存在classpath位置之中,所以为了方便读取,直接使用Spring完成资源的读取

2.1、上传文件

1、建立一个新的项目:FastProject,并且将开发包配置到项目之中;

2、在src下建立一个fdfs_client.conf的配置文件,文件内容如下:

tracker_server=192.168.122.198:22122

3、编写程序实现上传:

package cn.mldn.demo;import java.io.File;import java.util.Arrays;import org.csource.common.NameValuePair;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;import org.springframework.core.io.ClassPathResource;publicc lassFDFSUploadDemo{public static void main(String[]args) throws Exception{//1、设置一个上传文件的路径;File imgFile=new File("D:"+File.separator+"pic-c.jpg");//取得文件扩展名称String fileExtName=imgFile.getName().substring(imgFile.getName().lastIndexOf(".")+1);//2、读取上传的配置文件,此配置文件在CLASSPATH路径下ClassPathResource res=newClassPathResource("fdfs_client.conf");//3、初始化FastDFS上传的环境ClientGlobal.init(res.getClassLoader().getResource("fdfs_client.conf").getPath());//4、建立Tracker的客户端连接TrackerClient tracker=new TrackerClient();TrackerServert rackerServer=tracker.getConnection();//取得服务器连接//5、真正负责数据保存的是Storage StorageServer storageServer=null;//6、进行StoragerClient的创建StorageClient client=new StorageClient(trackerServer,storageServer);//7、创建文件的元数据对象 NameValuePair[] metaList=new NameValuePair[3];metaList[0]=newNameValuePair("fileName",imgFile.getName());metaList[1]=newNameValuePair("fileExtName",fileExtName);metaList[2]=newNameValuePair("fileLength",String.valueOf(imgFile.length()));//8、实现文件上传,返回文件的路径名称String[] fileId=client.upload_file(imgFile.getPath(),fileExtName,metaList);System.out.println(Arrays.toString(fileId));trackerServer.close();}}

此时返回的上传后的文件信息之中包含了两项内容:保存的组名称、保存的图片的路径。访问路径:http://192.168.122.198/group2/M00/00/00/wKh7ylg7zDCAZt1VAAL6dz7aOB0285.jpg但是这样上传太麻烦了,最搞笑的是在FastDFS里面如果要上传提供一堆方法:

StorageClient1 client=newStorageClient1(trackerServer,storageServer);StringfileId=client.upload_file1(imgFile.getPath(),fileExtName,metaList);

至于选择那种上传,看你自己的喜好了。

2.2、取得文件信息

文件已经上传完成了,那么下面也可以通过Fastdfs客户端取得文件的相关信息内容。范例:取得文件信息

packagecn.mldn.demo;importorg.csource.fastdfs.ClientGlobal;importorg.csource.fastdfs.FileInfo;importorg.csource.fastdfs.StorageClient1;importorg.csource.fastdfs.StorageServer;importorg.csource.fastdfs.TrackerClient;importorg.csource.fastdfs.TrackerServer;importorg.springframework.core.io.ClassPathResource;publicclassFDFSInfoDemo{
public static void main(String[] args)throwsException{  //1、读取上传的配置文件,此配置文件在CLASSPATH路径下ClassPathResource res=newClassPathResource("fdfs_client.conf");//2、初始化FastDFS上传的环境ClientGlobal.init(res.getClassLoader().getResource("fdfs_client.conf").getPath());//3、建立Tracker的客户端连接TrackerClient tracker=new TrackerClient();TrackerServer trackerServer=tracker.getConnection();//取得服务器连接//4、真正负责数据保存的是Storage StorageServerstorageServer=null;//5、进行StoragerClient的创建StorageClient1client=newStorageClient1(trackerServer,storageServer);//6、取得文件的相关信息 StringfileName="group2/M00/00/00/wKh7yVg7zQSAFqYWAAL6dz7aOB0479.jpg";FileInfo fi=client.get_file_info1(fileName);System.out.println("得到文件大小:"+fi.getFileSize());System.out.println("创建日期:"+fi.getCreateTimestamp());System.out.println("真实保存主机:"+fi.getSourceIpAddr());trackerServer.close();}}

现在它所取得都是真正保存在storage服务器上的文件信息。

2.3、删除文件

当某些信息不再使用的时候一定要将对应的图片的内容删除干净,所以下面来观察文件的删除处理。范例:删除文件.

importorg.csource.fastdfs.ClientGlobal;importorg.csource.fastdfs.StorageClient1;importorg.csource.fastdfs.StorageServer;importorg.csource.fastdfs.TrackerClient;importorg.csource.fastdfs.TrackerServer;importorg.springframework.core.io.ClassPathResource;
publicclassFDFSDeleteDemo{  publicstaticvoidmain(String[]args)throwsException{  //1、读取上传的配置文件,此配置文件在CLASSPATH路径下ClassPathResource res=newClassPathResource("fdfs_client.conf");//2、初始化FastDFS上传的环境ClientGlobal.init(res.getClassLoader().getResource("fdfs_client.conf").getPath());//3、建立Tracker的客户端连接TrackerClient tracker=newTrackerClient();TrackerServer trackerServer=tracker.getConnection();//取得服务器连接//4、真正负责数据保存的是Storage StorageServer storageServer=null;//5、进行StoragerClient的创建StorageClient1 client=newStorageClient1(trackerServer,storageServer);//6、取得文件的相关信息 StringfileName="group2/M00/00/00/wKh7yVg7zQSAFqYWAAL6dz7aOB0479.jpg";System.out.println(client.delete_file1(fileName));trackerServer.close();  }

而在删除之后如果删除成功则返回0,删除失败则返回2。这个时候在你以后的开发过程之中,如果再牵扯到所谓的电商系统,或者是新闻客户端。你一定要清楚,将文件两大的数据单独保存在一个文件服务器里,而后进行引用。

看完上述内容,你们掌握Java中怎么对FastDFS进行操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI