FastDFS:Java客户都实现文件的上传、下载、修改、删除
生活随笔
收集整理的這篇文章主要介紹了
FastDFS:Java客户都实现文件的上传、下载、修改、删除
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
FastDFS:Java客戶都實(shí)現(xiàn)文件的上傳、下載、修改、刪除
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.fastdfs.demo</groupId><artifactId>fastDFSdemo</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.csource.fastdfs</groupId><artifactId>fastdfs</artifactId><version>1.2</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.3</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.1</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.5.8</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.5.8</version><scope>test</scope></dependency></dependencies></project> fastdfs_client.conf tracker_server=localhost:22122 import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream;import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.StorageClient1; import org.csource.fastdfs.StorageServer; import org.csource.fastdfs.TrackerClient; import org.csource.fastdfs.TrackerGroup; import org.csource.fastdfs.TrackerServer;public class FastDFSClientUtils {private static final String CONF_FILENAME = Thread.currentThread().getContextClassLoader().getResource("fastdfs_client.conf").getPath();private static Logger logger = Logger.getLogger(FastDFSClientUtils.class);private static TrackerClient trackerClient;//加載文件static {try {ClientGlobal.init(CONF_FILENAME);TrackerGroup trackerGroup = ClientGlobal.g_tracker_group;trackerClient = new TrackerClient(trackerGroup);} catch (Exception e) {logger.error(e);}}/*** <B>方法名稱:</B>上傳方法<BR>* <B>概要說明:</B><BR>* @param file 文件* @param path 路徑* @return 上傳成功返回id,失敗返回null*/public static String upload(File file, String path) {TrackerServer trackerServer = null;StorageServer storageServer = null;StorageClient1 storageClient1 = null;FileInputStream fis = null;try {NameValuePair[] meta_list = null; // new NameValuePair[0];fis = new FileInputStream(file);byte[] file_buff = null;if (fis != null) {int len = fis.available();file_buff = new byte[len];fis.read(file_buff);}trackerServer = trackerClient.getConnection();if (trackerServer == null) {logger.error("getConnection return null");}storageServer = trackerClient.getStoreStorage(trackerServer);storageClient1 = new StorageClient1(trackerServer, storageServer);String fileid = storageClient1.upload_file1(file_buff, getFileExt(path), meta_list);return fileid;} catch (Exception ex) {logger.error(ex);return null;}finally{if (fis != null){try {fis.close();} catch (IOException e) {logger.error(e);}}if (storageServer != null){try {storageServer.close();} catch (IOException e) {e.printStackTrace();}}if (trackerServer != null){try {trackerServer.close();} catch (IOException e) {e.printStackTrace();}}storageClient1 = null;}}/*** <B>方法名稱:</B>上傳方法<BR>* <B>概要說明:</B><BR>* @param data 數(shù)據(jù)* @param path 路徑* @return 上傳成功返回id,失敗返回null*/public static String upload(byte[] data, String extName) {TrackerServer trackerServer = null;StorageServer storageServer = null;StorageClient1 storageClient1 = null;try {NameValuePair[] meta_list = null; // new NameValuePair[0];trackerServer = trackerClient.getConnection();if (trackerServer == null) {logger.error("getConnection return null");}storageServer = trackerClient.getStoreStorage(trackerServer);storageClient1 = new StorageClient1(trackerServer, storageServer);String fileid = storageClient1.upload_file1(data, extName, meta_list);return fileid;} catch (Exception ex) {logger.error(ex);return null;}finally{if (storageServer != null){try {storageServer.close();} catch (IOException e) {e.printStackTrace();}}if (trackerServer != null){try {trackerServer.close();} catch (IOException e) {e.printStackTrace();}}storageClient1 = null;}}/*** <B>方法名稱:</B>下載方法<BR>* <B>概要說明:</B>通過文件id進(jìn)行下載<BR>* @param fileId 文件id* @return 返回InputStream*/public static InputStream download(String groupName, String fileId) {TrackerServer trackerServer = null;StorageServer storageServer = null;StorageClient1 storageClient1 = null;try {trackerServer = trackerClient.getConnection();if (trackerServer == null) {logger.error("getConnection return null");}storageServer = trackerClient.getStoreStorage(trackerServer, groupName);storageClient1 = new StorageClient1(trackerServer, storageServer);byte[] bytes = storageClient1.download_file1(fileId);InputStream inputStream = new ByteArrayInputStream(bytes);return inputStream;} catch (Exception ex) {logger.error(ex);return null;} finally {if (storageServer != null){try {storageServer.close();} catch (IOException e) {e.printStackTrace();}}if (trackerServer != null){try {trackerServer.close();} catch (IOException e) {e.printStackTrace();}}storageClient1 = null; }}/*** <B>方法名稱:</B>刪除方法<BR>* <B>概要說明:</B>根據(jù)id來刪除一個文件<BR>* @param fileId 文件id* @return 刪除成功返回0,非0則操作失敗,返回錯誤代碼*/public static int delete(String groupName, String fileId) {TrackerServer trackerServer = null;StorageServer storageServer = null;StorageClient1 storageClient1 = null;try {trackerServer = trackerClient.getConnection();if (trackerServer == null) {logger.error("getConnection return null");}storageServer = trackerClient.getStoreStorage(trackerServer, groupName);storageClient1 = new StorageClient1(trackerServer, storageServer);int result = storageClient1.delete_file1(fileId);return result;} catch (Exception ex) {logger.error(ex);return 0;} finally {if (storageServer != null){try {storageServer.close();} catch (IOException e) {e.printStackTrace();}}if (trackerServer != null){try {trackerServer.close();} catch (IOException e) {e.printStackTrace();}}storageClient1 = null; }}/*** <B>方法名稱:</B><BR>* <B>概要說明:</B><BR>* @param oldFileId 舊文件id * @param file 新文件* @param path 新文件路徑* @return 上傳成功返回id,失敗返回null*/public static String modify(String oldGroupName, String oldFileId, File file, String path) {String fileid = null;try {// 先上傳fileid = upload(file, path);if (fileid == null) {return null;}// 再刪除int delResult = delete(oldGroupName, oldFileId);if (delResult != 0) {return null;}} catch (Exception ex) {logger.error(ex);return null;}return fileid;}/*** <B>方法名稱:</B>獲取文件后綴名<BR>* <B>概要說明:</B>獲取文件后綴名<BR>* @param fileName* @return 如:"jpg"、"txt"、"zip" 等*/private static String getFileExt(String fileName) {if (StringUtils.isBlank(fileName) || !fileName.contains(".")) {return "";} else {return fileName.substring(fileName.lastIndexOf(".") + 1); }} } import java.io.File; import java.io.InputStream;import org.apache.commons.io.FileUtils;public class FastDFSTest {/*** 上傳*/public static void upload() throws Exception {String path = "C:\\Users\\Leon.sun\\Desktop\\Temp\\img\\56.jpg";File file = new File(path);String fileId = FastDFSClientUtils.upload(file, path);// 本地文件:C:\Users\Leon.sun\Desktop\Temp\img\56.jpg,上傳成功! 文件ID為:group1/M00/00/00/rBH2Clw3EpeAbO70AAB5yKpbklA306.jpgSystem.out.println("本地文件:" + path + ",上傳成功! 文件ID為:" + fileId);}/*** 下載*/public static void download() throws Exception {String fileId = "group1/M00/00/00/rBH2Clw3EpeAbO70AAB5yKpbklA306.jpg";InputStream inputStream = FastDFSClientUtils.download("group1", fileId);System.out.println(inputStream.available());String path = "C:\\Users\\Leon.sun\\Desktop\\Temp\\img\\66.jpg";System.out.println(path);FileUtils.copyInputStreamToFile(inputStream, new File(path));}/*** 刪除*/public static void delete() throws Exception {String fileId = "group1/M00/00/00/rBH2Clw3EpeAbO70AAB5yKpbklA306.jpg";int result = FastDFSClientUtils.delete("group1", fileId);System.out.println(result == 0 ? "刪除成功" : "刪除失敗:" + result);}/*** @param args* @throws Exception */public static void main(String[] args) throws Exception {// upload(); // download(); // Thread.sleep(10000); // download(); // Thread.sleep(10000); // download();delete();}}?
總結(jié)
以上是生活随笔為你收集整理的FastDFS:Java客户都实现文件的上传、下载、修改、删除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FastDFS集群部署
- 下一篇: Oracle 语言分类 数据类型 数据类