|
@@ -1,13 +1,12 @@
|
|
|
package cn.reghao.tnb.file.app.service;
|
|
package cn.reghao.tnb.file.app.service;
|
|
|
|
|
|
|
|
-import cn.reghao.tnb.file.app.config.ConfigMap;
|
|
|
|
|
|
|
+import cn.reghao.tnb.file.app.config.DfsProperties;
|
|
|
import cn.reghao.tnb.file.app.config.PathUrl;
|
|
import cn.reghao.tnb.file.app.config.PathUrl;
|
|
|
import cn.reghao.tnb.file.app.util.LoadBalancer;
|
|
import cn.reghao.tnb.file.app.util.LoadBalancer;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
-import java.time.LocalDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author reghao
|
|
* @author reghao
|
|
@@ -15,24 +14,37 @@ import java.time.LocalDate;
|
|
|
*/
|
|
*/
|
|
|
@Service
|
|
@Service
|
|
|
public class FileUrlService {
|
|
public class FileUrlService {
|
|
|
|
|
+ private final String domain;
|
|
|
private final LoadBalancer loadBalancer;
|
|
private final LoadBalancer loadBalancer;
|
|
|
|
|
|
|
|
- public FileUrlService(LoadBalancer loadBalancer) {
|
|
|
|
|
|
|
+ public FileUrlService(LoadBalancer loadBalancer, DfsProperties dfsProperties) {
|
|
|
this.loadBalancer = loadBalancer;
|
|
this.loadBalancer = loadBalancer;
|
|
|
|
|
+ this.domain = dfsProperties.getDomain();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public PathUrl genPathAndUrl(String sha256sum, String fileId, String suffix) throws IOException, NoSuchAlgorithmException {
|
|
public PathUrl genPathAndUrl(String sha256sum, String fileId, String suffix) throws IOException, NoSuchAlgorithmException {
|
|
|
- String baseDir = loadBalancer.getBaseDir(sha256sum);
|
|
|
|
|
- String dateStr = LocalDate.now().toString().replace("-", "");
|
|
|
|
|
- String filePath = String.format("%s%s/%s.%s", baseDir, dateStr, fileId, suffix);
|
|
|
|
|
- return ConfigMap.getPathUrl(baseDir, filePath);
|
|
|
|
|
|
|
+ String storeDir = loadBalancer.getStoreDir(0, sha256sum);
|
|
|
|
|
+ String filePath = String.format("%s/%s.%s", storeDir, fileId, suffix);
|
|
|
|
|
+ String path = String.format("video/%s.%s", fileId, suffix);
|
|
|
|
|
+ String url = String.format("//%s/video/%s.%s", domain, fileId, suffix);
|
|
|
|
|
+ return new PathUrl(filePath, url, path);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public PathUrl genVideoPathAndUrl(String sha256sum, String uploadId, long fileSize, String fileId, String suffix)
|
|
|
|
|
+ throws IOException, NoSuchAlgorithmException {
|
|
|
|
|
+ String storeDir = loadBalancer.getStoreDir(fileSize, sha256sum);
|
|
|
|
|
+ String filePath = String.format("%s/%s.%s", storeDir, fileId, suffix);
|
|
|
|
|
+ String path = String.format("video/%s.%s", uploadId, suffix);
|
|
|
|
|
+ String url = String.format("//%s/video/%s.%s", domain, uploadId, suffix);
|
|
|
|
|
+ return new PathUrl(filePath, url, path);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public PathUrl getImagePathAndUrl(String sha256sum, String fileId, String suffix, int width, int height)
|
|
public PathUrl getImagePathAndUrl(String sha256sum, String fileId, String suffix, int width, int height)
|
|
|
throws IOException, NoSuchAlgorithmException {
|
|
throws IOException, NoSuchAlgorithmException {
|
|
|
- String baseDir = loadBalancer.getBaseDir(sha256sum);
|
|
|
|
|
- String dateStr = LocalDate.now().toString().replace("-", "");
|
|
|
|
|
- String filePath = String.format("%s%s/%s_%sx%s.%s", baseDir, dateStr, fileId, width, height, suffix);
|
|
|
|
|
- return ConfigMap.getPathUrl(baseDir, filePath);
|
|
|
|
|
|
|
+ String storeDir = loadBalancer.getStoreDir(0, sha256sum);
|
|
|
|
|
+ String filePath = String.format("%s/%s_%sx%s.%s", storeDir, fileId, width, height, suffix);
|
|
|
|
|
+ String path = String.format("video/%s.%s", fileId, suffix);
|
|
|
|
|
+ String url = String.format("//%s/image/%s.%s", domain, fileId, suffix);
|
|
|
|
|
+ return new PathUrl(filePath, url, path);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|