FastDFSUtils.java 5 KB
package cn.wisenergy.chnmuseum.party.common.dfs;

import org.apache.commons.io.FilenameUtils;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 上传图片到FastDFS
 */
public class FastDFSUtils {

	static {
		try {
			ClientGlobal.initByProperties(FastDFSUtils.class.getClassLoader().getResource("fastdfs-client.properties").getPath());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (MyException e) {
			e.printStackTrace();
		}
	}

	public static String[] uploadPic(String path, String fileName, long size) {
		String[] fileIds = null;
		try {
			// ClientGloble 读配置文件
			// 老大客户端
			TrackerClient trackerClient = new TrackerClient();
			TrackerServer trackerServer = trackerClient.getConnection();
			StorageServer storageServer = null;
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			String extName = FilenameUtils.getExtension(fileName);

			NameValuePair[] meta_list = new NameValuePair[3];
			meta_list[0] = new NameValuePair("fileName", fileName);
			meta_list[1] = new NameValuePair("fileExt", extName);
			meta_list[2] = new NameValuePair("fileSize", String.valueOf(size));

			// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png
			// group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
			fileIds = storageClient.upload_file(path, extName, meta_list);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return fileIds;
	}

	public static String[] uploadPic(InputStream inStream, String fileName, long size) {
		String[] fileIds = null;
		try {
			// ClientGloble 读配置文件
			// 老大客户端
			TrackerClient trackerClient = new TrackerClient();
			TrackerServer trackerServer = trackerClient.getConnection();
			StorageServer storageServer = null;
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			String extName = FilenameUtils.getExtension(fileName);

			NameValuePair[] meta_list = new NameValuePair[3];
			meta_list[0] = new NameValuePair("fileName", fileName);
			meta_list[1] = new NameValuePair("fileExt", extName);
			meta_list[2] = new NameValuePair("fileSize", String.valueOf(size));

			// http://172.16.15.244:8081/group1/M00/00/00/rBAP9FfFG62AZsuBAADeW7MfEHA287.png
			// group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg
			fileIds = storageClient.upload_file(null, size, new UploadFileSender(inStream), extName, meta_list);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return fileIds;
	}

	public static String uploadPic(byte[] pic, String fileName, long size) {
		String[] fileIds = null;
		try {
			// ClientGloble 读配置文件
			// 老客户端
			TrackerClient trackerClient = new TrackerClient();
			TrackerServer trackerServer = trackerClient.getConnection();
			StorageServer storageServer = null;
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			String extName = FilenameUtils.getExtension(fileName);
			// 设置图片meta信息
			NameValuePair[] meta_list = new NameValuePair[3];
			meta_list[0] = new NameValuePair("fileName", fileName);
			meta_list[1] = new NameValuePair("fileExt", extName);
			meta_list[2] = new NameValuePair("fileSize", String.valueOf(size));
			// 上传且返回path
			fileIds = storageClient.upload_file(pic, extName, meta_list);
			return fileIds[0] + "/" + fileIds[1];
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static boolean deletePic(String fileUrl) {
		try {
			TrackerClient tracker = new TrackerClient();
			TrackerServer trackerServer = tracker.getConnection();
			StorageServer storageServer = null;
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			StorePath storePath = StorePath.praseFromUrl(fileUrl);
			int i = storageClient.delete_file(storePath.getGroup(), storePath.getPath());
			System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
			return i == 0;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static String deletePic(String[] fileIds) {
		try {
			TrackerClient tracker = new TrackerClient();
			TrackerServer trackerServer = tracker.getConnection();
			StorageServer storageServer = null;
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			int i = storageClient.delete_file(fileIds[0], fileIds[1]);
			System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return fileIds[1];
	}

	private static class UploadFileSender implements UploadCallback {
		private InputStream inStream;

		public UploadFileSender(InputStream inStream) {
			this.inStream = inStream;
		}

		public int send(OutputStream out) throws IOException {
			int readBytes;
			while ((readBytes = inStream.read()) > 0) {
				out.write(readBytes);
			}
			return 0;
		}
	}

}