FastDFSUtils.java 5 KB
Newer Older
liqin's avatar
liqin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
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;
		}
	}

}