集成 FastDFS。
parent
cec72ba7f9
commit
117390c5ae
|
@ -31,6 +31,11 @@
|
||||||
<artifactId>spring-webmvc</artifactId>
|
<artifactId>spring-webmvc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>xyz.zhouxy.plusone</groupId>
|
<groupId>xyz.zhouxy.plusone</groupId>
|
||||||
<artifactId>plusone-commons</artifactId>
|
<artifactId>plusone-commons</artifactId>
|
||||||
|
@ -44,7 +49,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>xyz.zhouxy.plusone</groupId>
|
<groupId>xyz.zhouxy.plusone</groupId>
|
||||||
<artifactId>plusone-exception-handler</artifactId>
|
<artifactId>plusone-exception-handler</artifactId>
|
||||||
<version>0.0.6-SNAPSHOT</version>
|
<version>0.0.7-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>xyz.zhouxy</groupId>
|
<groupId>xyz.zhouxy</groupId>
|
||||||
|
@ -84,6 +86,11 @@
|
||||||
<groupId>com.tencentcloudapi</groupId>
|
<groupId>com.tencentcloudapi</groupId>
|
||||||
<artifactId>tencentcloud-sdk-java-sms</artifactId>
|
<artifactId>tencentcloud-sdk-java-sms</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.csource</groupId>
|
||||||
|
<artifactId>fastdfs-client-java</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package xyz.zhouxy.plusone.oss;
|
||||||
|
|
||||||
|
public class FastDFSException extends Exception {
|
||||||
|
|
||||||
|
public FastDFSException() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public FastDFSException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FastDFSException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FastDFSException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FastDFSException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||||
|
super(message, cause, enableSuppression, writableStackTrace);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,139 @@
|
||||||
|
package xyz.zhouxy.plusone.oss;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import org.csource.common.MyException;
|
||||||
|
import org.csource.common.NameValuePair;
|
||||||
|
import org.csource.fastdfs.ClientGlobal;
|
||||||
|
import org.csource.fastdfs.FileInfo;
|
||||||
|
import org.csource.fastdfs.StorageClient;
|
||||||
|
import org.csource.fastdfs.StorageServer;
|
||||||
|
import org.csource.fastdfs.TrackerClient;
|
||||||
|
import org.csource.fastdfs.TrackerServer;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
public class FastDFSUtil {
|
||||||
|
|
||||||
|
private static TrackerClient trackerClient;
|
||||||
|
private static TrackerServer trackerServer;
|
||||||
|
private static StorageServer storageServer;
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(FastDFSUtil.class);
|
||||||
|
|
||||||
|
private FastDFSUtil() {
|
||||||
|
throw new IllegalStateException("Utility class");
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
|
||||||
|
ClientGlobal.init(filePath);
|
||||||
|
trackerClient = new TrackerClient();
|
||||||
|
trackerServer = trackerClient.getTrackerServer();
|
||||||
|
storageServer = trackerClient.getStoreStorage(trackerServer);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("FastDFS Client Init Fail!", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传文件到 Fast DFS,失败将抛异常
|
||||||
|
*
|
||||||
|
* @param file 文件信息
|
||||||
|
* @return 2 elements string array if success:<br>
|
||||||
|
* <ul>
|
||||||
|
* <li>results[0]: the group name to store the file</li>
|
||||||
|
* </ul>
|
||||||
|
* <ul>
|
||||||
|
* <li>results[1]: the new created filename</li>
|
||||||
|
* </ul>
|
||||||
|
* return null if fail
|
||||||
|
* @throws FastDFSException
|
||||||
|
*/
|
||||||
|
public static String[] upload(FastDFSFile file) throws FastDFSException {
|
||||||
|
logger.info("File Name: {}, File Length: {}", file.getName(), file.getContent().length);
|
||||||
|
|
||||||
|
NameValuePair[] metaList = new NameValuePair[1];
|
||||||
|
metaList[0] = new NameValuePair("author", file.getAuthor());
|
||||||
|
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
StorageClient storageClient = null;
|
||||||
|
String[] uploadResults = null;
|
||||||
|
try {
|
||||||
|
storageClient = new StorageClient(trackerServer, storageServer);
|
||||||
|
uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), metaList);
|
||||||
|
|
||||||
|
if (uploadResults == null) {
|
||||||
|
throw new FastDFSException("upload file fail, error code: " + storageClient.getErrorCode());
|
||||||
|
}
|
||||||
|
logger.info("Upload file successfully!!! group_name: {}, remoteFileName: {}, time used: {} ms",
|
||||||
|
uploadResults[0], uploadResults[1], System.currentTimeMillis() - startTime);
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new FastDFSException("IO Exception when uploadind the file:" + file.getName(), e);
|
||||||
|
} catch (MyException e) {
|
||||||
|
throw new FastDFSException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return uploadResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FileInfo getFile(String groupName, String remoteFileName) throws FastDFSException {
|
||||||
|
try {
|
||||||
|
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
|
||||||
|
return storageClient.get_file_info(groupName, remoteFileName);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new FastDFSException("IO Exception: Get File from Fast DFS failed", e);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new FastDFSException("Non IO Exception: Get File from Fast DFS failed", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static InputStream downFile(String groupName, String remoteFileName) throws FastDFSException {
|
||||||
|
try {
|
||||||
|
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
|
||||||
|
byte[] fileByte = storageClient.download_file(groupName, remoteFileName);
|
||||||
|
InputStream ins = new ByteArrayInputStream(fileByte);
|
||||||
|
return ins;
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new FastDFSException("IO Exception: Get File from Fast DFS failed", e);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new FastDFSException("Non IO Exception: Get File from Fast DFS failed", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void deleteFile(String groupName, String remoteFileName) throws FastDFSException {
|
||||||
|
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
|
||||||
|
try {
|
||||||
|
int i = storageClient.delete_file(groupName, remoteFileName);
|
||||||
|
if (i == 0) {
|
||||||
|
logger.info("Delete file SUCCESSFULLY!!!");
|
||||||
|
} else {
|
||||||
|
throw new FastDFSException("Delete file failed, error code is: " + i);
|
||||||
|
}
|
||||||
|
} catch (IOException | MyException e) {
|
||||||
|
throw new FastDFSException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public static final class FastDFSFile {
|
||||||
|
private String name;
|
||||||
|
private byte[] content;
|
||||||
|
private String ext;
|
||||||
|
private String md5;
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
public FastDFSFile(String name, byte[] content, String ext) {
|
||||||
|
this.name = name;
|
||||||
|
this.content = content;
|
||||||
|
this.ext = ext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
connect_timeout = 60
|
||||||
|
network_timeout = 60
|
||||||
|
charset = UTF-8
|
||||||
|
http.tracker_http_port = 8080
|
||||||
|
http.anti_steal_token = no
|
||||||
|
http.secret_key = 123456
|
||||||
|
|
||||||
|
tracker_server = 10.30.80.199:22122
|
Loading…
Reference in New Issue