196 lines
6.3 KiB
Java
196 lines
6.3 KiB
Java
|
|
package com.zhangmeng.file.utils;
|
||
|
|
|
||
|
|
import org.csource.common.NameValuePair;
|
||
|
|
import org.csource.fastdfs.*;
|
||
|
|
import org.springframework.core.io.ClassPathResource;
|
||
|
|
|
||
|
|
import java.io.ByteArrayInputStream;
|
||
|
|
import java.io.IOException;
|
||
|
|
import java.io.InputStream;
|
||
|
|
|
||
|
|
public class FastDfsClient {
|
||
|
|
|
||
|
|
static {
|
||
|
|
//从classpath下获取文件对象获取路径
|
||
|
|
String path = new ClassPathResource("fastDFS.config").getPath();
|
||
|
|
try {
|
||
|
|
ClientGlobal.init(path);
|
||
|
|
} catch (Exception e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 图片上传
|
||
|
|
*
|
||
|
|
* @param file
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
public static String[] upload(com.zhangmeng.model.dto.File file) {
|
||
|
|
try {
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
StorageClient storageClient = new StorageClient(trackerServer, null);
|
||
|
|
//参数1 字节数组
|
||
|
|
//参数2 扩展名(不带点)
|
||
|
|
//参数3 元数据( 文件的大小,文件的作者,文件的创建时间戳)
|
||
|
|
NameValuePair[] meta_list = new NameValuePair[]{new NameValuePair(file.getAuthor()), new NameValuePair(file.getName())};
|
||
|
|
String[] strings = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);
|
||
|
|
return strings;
|
||
|
|
} catch (Exception e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 图片下载
|
||
|
|
*
|
||
|
|
* @param groupName
|
||
|
|
* @param remoteFileName
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
public static InputStream downFile(String groupName, String remoteFileName) {
|
||
|
|
ByteArrayInputStream byteArrayInputStream = null;
|
||
|
|
try {
|
||
|
|
//3.创建trackerclient对象
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
//5.创建stroageserver 对象
|
||
|
|
//6.创建storageclient 对象
|
||
|
|
StorageClient storageClient = new StorageClient(trackerServer, null);
|
||
|
|
//7.根据组名 和 文件名 下载图片
|
||
|
|
|
||
|
|
//参数1:指定组名
|
||
|
|
//参数2 :指定远程的文件名
|
||
|
|
byte[] bytes = storageClient.download_file(groupName, remoteFileName);
|
||
|
|
byteArrayInputStream = new ByteArrayInputStream(bytes);
|
||
|
|
return byteArrayInputStream;
|
||
|
|
} catch (Exception e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
} finally {
|
||
|
|
try {
|
||
|
|
if (byteArrayInputStream != null) {
|
||
|
|
byteArrayInputStream.close();
|
||
|
|
}
|
||
|
|
} catch (IOException e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 图片删除
|
||
|
|
*
|
||
|
|
* @param groupName
|
||
|
|
* @param remoteFileName
|
||
|
|
*/
|
||
|
|
public static void deleteFile(String groupName, String remoteFileName) {
|
||
|
|
try {
|
||
|
|
//3.创建trackerclient对象
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
//5.创建stroageserver 对象
|
||
|
|
//6.创建storageclient 对象
|
||
|
|
StorageClient storageClient = new StorageClient(trackerServer, null);
|
||
|
|
int i = storageClient.delete_file(groupName, remoteFileName);
|
||
|
|
if (i == 0) {
|
||
|
|
System.out.println("删除成功");
|
||
|
|
} else {
|
||
|
|
System.out.println("删除失败");
|
||
|
|
}
|
||
|
|
} catch (Exception e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//根据组名获取组的信息
|
||
|
|
|
||
|
|
public static StorageServer getStorages(String groupName) {
|
||
|
|
try {
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
|
||
|
|
//参数1 指定traqckerserver 对象
|
||
|
|
//参数2 指定组名
|
||
|
|
StorageServer group1 = trackerClient.getStoreStorage(trackerServer, groupName);
|
||
|
|
return group1;
|
||
|
|
} catch (IOException e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
//根据文件名和组名获取文件的信息
|
||
|
|
|
||
|
|
public static FileInfo getFile(String groupName, String remoteFileName) {
|
||
|
|
try {
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
|
||
|
|
StorageClient storageClient = new StorageClient(trackerServer, null);
|
||
|
|
|
||
|
|
//参数1 指定组名
|
||
|
|
//参数2 指定文件的路径
|
||
|
|
FileInfo fileInfo = storageClient.get_file_info(groupName, remoteFileName);
|
||
|
|
return fileInfo;
|
||
|
|
} catch (Exception e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 根据文件名和组名 获取组信息的数组信息
|
||
|
|
*
|
||
|
|
* @param groupName
|
||
|
|
* @param remoteFileName
|
||
|
|
* @return ServerInfo[]
|
||
|
|
*/
|
||
|
|
public static ServerInfo[] getServerInfo(String groupName, String remoteFileName) {
|
||
|
|
try {
|
||
|
|
//3.创建trackerclient对象
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
|
||
|
|
ServerInfo[] group1s = trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName);
|
||
|
|
return group1s;
|
||
|
|
} catch (IOException e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 获取tracker 的ip和端口的信息
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
public static String getTrackerUrl() {
|
||
|
|
try {
|
||
|
|
//3.创建trackerclient对象
|
||
|
|
TrackerClient trackerClient = new TrackerClient();
|
||
|
|
//4.创建trackerserver 对象
|
||
|
|
TrackerServer trackerServer = trackerClient.getConnection();
|
||
|
|
//tracker 的ip的信息
|
||
|
|
String hostString = trackerServer.getInetSocketAddress().getHostString();
|
||
|
|
int g_tracker_http_port = ClientGlobal.getG_tracker_http_port();
|
||
|
|
return "http://" + hostString + ":" + g_tracker_http_port;
|
||
|
|
} catch (IOException e) {
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
}
|