cn.novelweb.tool.upload.fastdfs.client.StorageClient Maven / Gradle / Ivy
package cn.novelweb.tool.upload.fastdfs.client;
import cn.novelweb.tool.upload.fastdfs.model.FileInfo;
import cn.novelweb.tool.upload.fastdfs.model.MateData;
import cn.novelweb.tool.upload.fastdfs.model.StorePath;
import cn.novelweb.tool.upload.fastdfs.protocol.storage.callback.DownloadCallback;
import java.io.InputStream;
import java.util.Set;
/**
* 存储服务(Storage)客户端接口
* 2016/11/21 16:11
*
* @author LiZW
**/
public interface StorageClient {
/**
* 上传文件
* 文件上传后不可以修改,如果要修改则删除以后重新上传
*
* @param groupName 组名称
* @param inputStream 文件输入流
* @param fileSize 文件大小
* @param fileExtName 文件扩展名
* @return 文件存储路径
*/
StorePath uploadFile(String groupName, InputStream inputStream, long fileSize, String fileExtName);
/**
* 上传从文件
*
* @param groupName 组名称
* @param masterFilename 主文件路径
* @param inputStream 从文件输入流
* @param fileSize 从文件大小
* @param prefixName 从文件前缀
* @param fileExtName 主文件扩展名
* @return 文件存储路径
*/
StorePath uploadSlaveFile(String groupName, String masterFilename, InputStream inputStream, long fileSize, String prefixName, String fileExtName);
/**
* 获取文件元信息
*
* @param groupName 组名称
* @param path 主文件路径
* @return 获取文件元信息集合,不存在返回空集合
*/
Set getMetadata(String groupName, String path);
/**
* 修改文件元信息(覆盖)
*
* @param groupName 组名称
* @param path 主文件路径
* @param metaDataSet 元信息集合
* @return 修改成功与否的布尔值
*/
boolean overwriteMetadata(String groupName, String path, Set metaDataSet);
/**
* 修改文件元信息(合并)
*
* @param groupName 组名称
* @param path 主文件路径
* @param metaDataSet 元信息集合
* @return 修改成功与否的布尔值
*/
boolean mergeMetadata(String groupName, String path, Set metaDataSet);
/**
* 获取文件的信息
*
* @param groupName 组名称
* @param path 主文件路径
* @return 文件信息(不存在返回null)
*/
FileInfo queryFileInfo(String groupName, String path);
/**
* 删除文件
*
* @param groupName 组名称
* @param path 主文件路径
* @return 布尔值
*/
boolean deleteFile(String groupName, String path);
/**
* 下载整个文件
*
* @param groupName 组名称
* @param path 主文件路径
* @param callback 下载回调接口
* @return 下载回调接口返回结果
*/
T downloadFile(String groupName, String path, DownloadCallback callback);
/**
* 下载文件片段(断点续传)
*
* @param groupName 组名称
* @param path 主文件路径
* @param fileOffset 开始位置
* @param fileSize 文件大小(经过测试好像这个参数值只能是“0”)
* @param callback 下载回调接口
* @return 下载回调接口返回结果
*/
T downloadFile(String groupName, String path, long fileOffset, long fileSize, DownloadCallback callback);
// ----------------------------------------------------------------------------------------------------------------------------------------------------
/**
* 上传文件, 并设置文件元数据
*
* @param inputStream 文件输入流
* @param fileSize 文件大小
* @param fileExtName 文件扩展名
* @param metaDataSet 元信息集合
* @return 文件存储路径
*/
StorePath uploadFile(InputStream inputStream, long fileSize, String fileExtName, Set metaDataSet);
/**
* 文件上传(支持断点续传)
*
* @param groupName 组名称
* @param inputStream 文件输入流(文件部分)
* @param fileSize 文件大小
* @param fileExtName 文件扩展名
* @return 文件存储路径
*/
StorePath uploadAppenderFile(String groupName, InputStream inputStream, long fileSize, String fileExtName);
/**
* 断点续传文件
*
* @param groupName 组名称
* @param path 文件路径
* @param inputStream 文件输入流(文件部分)
* @param fileSize 文件大小
*/
void appendFile(String groupName, String path, InputStream inputStream, long fileSize);
/**
* 修改续传文件的内容
*
* @param groupName 组名称
* @param path 文件路径
* @param inputStream 文件输入流
* @param fileSize 文件大小
* @param fileOffset 开始位置
*/
void modifyFile(String groupName, String path, InputStream inputStream, long fileSize, long fileOffset);
/**
* 清除续传类型文件的内容
*
* @param groupName 组名称
* @param path 文件路径
* @param truncatedFileSize 截断文件大小
*/
void truncateFile(String groupName, String path, long truncatedFileSize);
/**
* 清除续传类型文件的内容
*
* @param groupName 组名称
* @param path 文件路径
*/
void truncateFile(String groupName, String path);
}