您好,登录后才能下订单哦!
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进行操作的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。