FastDFS文件上传
程序员文章站
2022-04-08 09:24:31
...
FastDFS小结一
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务
上传交互过程
- client询问tracker上传到的storage,不需要附加参数;
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件上传。
下载交互过程
- client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件下载。
上传实现
- 导入依赖
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
- 编写文件上传的工具类
public class FileUploadUtils {
private static TrackerClient trackerClient = null;
private static StorageServer storageServer = null;
private static TrackerServer trackerServer;
/**
* 构造方法,传入配置文件的路径
* @param configlocation
* @throws IOException
* @throws MyException
*/
public FileUploadUtils(String configlocation) throws IOException, MyException {
if (configlocation.startsWith("classpath:")) {
configlocation = configlocation.replace("classpath:", getClass().getResource("/").getPath());
//找到配置文件的磁盘路径
///D:/idea-workspace/springmvc/court/target/classes/config.properties
// System.out.println(configlocation);
}
ClientGlobal.init(configlocation);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
}
/**
* 方法的重载 调用内部的方法
* @param file
* @param ext_name
* @return
* @throws IOException
* @throws MyException
*/
public static String upload_file(byte[] file, String ext_name) throws IOException, MyException {
return upload_file(file, ext_name, null);
}
public static String upload_file(byte[] file, String ext_name, NameValuePair[] nameValuePairs) throws IOException, MyException {
StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);
//通过文件的字节和后缀名获得字符串数组
String[] uploadFile = storageClient1.upload_file(file, ext_name, null);
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < uploadFile.length; i++) {
stringBuffer.append(uploadFile[i]);
if (i == 0) {
stringBuffer.append("/");
}
}
//返回文件服务器的地址
return stringBuffer.toString();
}
}
- config.properties文件 -----就是服务器的域名
上一篇: 荣耀20青春版曝光 总裁赵明:ID美哭了
下一篇: layui按条件隐藏表格列
推荐阅读