<dependencies>
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-RELEASE</version>
</dependency>
</dependencies>
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @Author: gh
* @Description: 获取某个group下所有的文件,统计数据库(group或组内所有storage server)已使用的存储空间大小和文件数量,
* 上传、下载、删除某个group中的文件,数据库整体的使用率。通过mysql等中间数据库查询文件列表。
* 一个文件的标识包括两部分:卷名和文件名。
*/
public interface FastDFSDao {
/**
* 获取某个group(相当于数据库)下所有文件(相当于表)的名称列表。
* @param groupName 卷名。(相当于数据库)
* @return
*/
public List<String> getTablenamesOfDB(String groupName);
/**
* 下载文件到客户端
* @param resp
* @param groupName 卷/组 的名称,例如:group1
* @param remoteFileName FastDFS上的文件名称,例如:M00/00/5D/rB4Rsl01bDqAVKiEAAAHhIHVv9o735.jpg
* @return
*/
public int copyFileToClient(HttpServletResponse resp, String groupName,String remoteFileName);
/**
* 上传文件到fastDFS
* @param groupName 卷/组的名字
* @param filePath 文件的路径
* @param localFilename 文件名称
* @return
*/
public int uploadToFDFS(String groupName,String filePath,String localFilename);
/**
* 删除某个group中的某个文件
* @param groupName 卷/组的名字
* @param remoteFilename FastDFS上的文件名称,例如:M00/00/5D/rB4Rsl01bDqAVKiEAAAHhIHVv9o735.jpg
* @return
*/
public int deleteDFSFile(String groupName, String remoteFilename);
/**
* @param groupName 卷/组的名字
* @return (某个组下)已使用存储空间的大小
*/
public double storeSizeOfMB(String groupName);
/**
* @return 全部已使用存储空间的大小
*/
public double storeSizeOfMB();
/**
* 统计某个组(相当于数据库)下所有文件(相当于表)的数量
* @param groupName 卷/组的名字
* @return 文件的数量
*/
public int countTables(String groupName);
/**
* fastdfs整体使用率 = (getTotalMB-getFreeMB) / getTotalMB
* fastdfs单节点时,storageStat.getTotalMB()/getFreeMB = groupStat.getTotalMB()/getFreeMB
* @return
*/
public double usedRate();
}
import com.genius.dao.mysql.MysqlDaoImpl;
import com.genius.pojo.pg.dto.DataBaseDTO;
import org.apache.commons.lang.StringUtils;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Author: gh
* @Description:
*/
public class FastDFSDaoImpl implements FastDFSDao{
//String conf_filename = null;
FastDFSDTO fastDFSDTO = null;
TrackerGroup trackerGroup = null;
TrackerClient trackerClient = null;
TrackerServer trackerServer = null;
public FastDFSDaoImpl(FastDFSDTO dto) {
this.fastDFSDTO = dto;
this.trackerServer = connectToFastDFS();
}
private FastDFSDTO resetFastDFSDTO(FastDFSDTO dto){
this.fastDFSDTO = dto;
FastDFSDTO dtoForMysql = new FastDFSDTO();
dtoForMysql.setIp(fastDFSDTO.getIp2());
dtoForMysql.setHost(fastDFSDTO.getPort2());
dtoForMysql.setDbName(fastDFSDTO.getDbName2());
dtoForMysql.setUser(fastDFSDTO.getUser2());
dtoForMysql.setPasswd(fastDFSDTO.getPassw