﻿{"id":243,"date":"2016-12-02T20:29:08","date_gmt":"2016-12-02T12:29:08","guid":{"rendered":"http:\/\/www.chenweikang.top\/?p=243"},"modified":"2017-09-19T11:37:54","modified_gmt":"2017-09-19T03:37:54","slug":"fastdfs-java%e5%ae%a2%e6%88%b7%e7%ab%af%e7%9a%84%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.chenweikang.top\/?p=243","title":{"rendered":"FastDFS JAVA\u5ba2\u6237\u7aef\u7684\u4f7f\u7528"},"content":{"rendered":"<h2>1.\u5f15\u7528fastdfs-client.jar \u5305 \u53ef\u4f7f\u7528maven\uff1a<\/h2>\n<blockquote><p>com.github.tobato<br \/>\nfastdfs-client1.25.2-RELEASE<\/p><\/blockquote>\n<h2>2.\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6client.conf\uff1a<\/h2>\n<p><span style=\"color: #333333;\">connect_timeout = 2<\/span><br \/>\n<span style=\"color: #333333;\"> network_timeout = 30<\/span><br \/>\n<span style=\"color: #333333;\"> charset = UTF-8<\/span><br \/>\n<span style=\"color: #333333;\"> http.tracker_http_port = 9090<\/span><br \/>\n<span style=\"color: #333333;\"> http.anti_steal_token = no<\/span><br \/>\n<span style=\"color: #333333;\"> http.secret_key = FastDFS1234567890<\/span><br \/>\n<span style=\"color: #333333;\"> #\u8ddf\u8e2a\u5668\u670d\u52a1\u5730\u5740-\u8ddf\u8e2a\u5668\u4e3b\u8981\u505a\u8c03\u5ea6\u5de5\u4f5c\uff0c\u5728\u8bbf\u95ee\u4e0a\u8d77\u8d1f\u8f7d\u5747\u8861\u7684\u4f5c\u7528\u3002<\/span><br \/>\n<span style=\"color: #333333;\"> tracker_server = ip:22122 #\u53d6\u51b3\u4e8e\u6587\u4ef6\u670d\u52a1\u5668\u670d\u52a1\u7aef\u5730\u5740<\/span><\/p>\n<h2>3.\u5de5\u5177\u7c7b\u5982\u4e0b\uff1a<\/h2>\n<blockquote><p>&nbsp;<\/p>\n<p>public class FastDFSUtil {<\/p>\n<p>private static Map&lt;String,Object&gt; retMap = null;<\/p>\n<p>\/**<br \/>\n*<br \/>\n* Description:\u4e0a\u4f20\u670d\u52a1\u5668\u672c\u5730\u6587\u4ef6-\u901a\u8fc7Linux\u5ba2\u6237\u7aef<br \/>\n* @author: \u9648\u7ef4\u5eb7<br \/>\n* @date: 2016\u5e7411\u670818\u65e5<br \/>\n* @param filePath \u6587\u4ef6\u7edd\u5bf9\u8def\u5f84<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static Map&lt;String,Object&gt; uploadLocalFile(String filePath){<\/p>\n<p>retMap = new HashMap&lt;String, Object&gt;();<\/p>\n<p>\/\/String command = \"fdfs_upload_file \/etc\/fdfs\/client.conf \/chni\/data\/resource\/tcm\/file\/001000000000100002TCM.pdf\";<\/p>\n<p>String command = \"fdfs_upload_file \/etc\/fdfs\/client.conf \"+filePath;<\/p>\n<p>String fileId=\"\";<\/p>\n<p>try {<\/p>\n<p>\/\/\u8c03\u7528javaAPI \u6267\u884clinux\u547d\u4ee4\u4e0a\u4f20\u6587\u4ef6<\/p>\n<p>Process process = Runtime.getRuntime().exec(command);<\/p>\n<p>InputStreamReader ir=new InputStreamReader(process.getInputStream());<\/p>\n<p>BufferedReader input = new BufferedReader (ir);<\/p>\n<p>String line;<\/p>\n<p>if ((line = input.readLine ()) != null){<\/p>\n<p>fileId = line;<br \/>\n}<\/p>\n<p>if(fileId.contains(\"M00\")){<\/p>\n<p>retMap.put(\"code\", \"0000\");<\/p>\n<p>retMap.put(\"group\", fileId.substring(0,6));<\/p>\n<p>retMap.put(\"msg\",fileId.substring(7,fileId.length()));<br \/>\n}else{<\/p>\n<p>retMap.put(\"code\", \"0001\"); \/\/\u4e0a\u4f20\u9519\u8bef<\/p>\n<p>retMap.put(\"msg\", fileId); \/\/\u8fd4\u56de\u4fe1\u606f<br \/>\n}<\/p>\n<p>} catch (Exception e {<\/p>\n<p>retMap.put(\"code\", \"0002\");<\/p>\n<p>retMap.put(\"msg\", e.getMessage());<br \/>\n}<\/p>\n<p>return retMap;<\/p>\n<p>}<\/p>\n<p>\/**<br \/>\n*<br \/>\n* Description: \u76f4\u63a5\u901a\u8fc7fdfs java\u5ba2\u6237\u7aef\u4e0a\u4f20\u5230\u670d\u52a1\u5668-\u8bfb\u53d6\u672c\u5730\u6587\u4ef6\u4e0a\u4f20<br \/>\n* @author: \u9648\u7ef4\u5eb7<br \/>\n* @date: 2016\u5e7411\u670818\u65e5<br \/>\n* @param filePath \u672c\u5730\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static Map&lt;String,Object&gt; upload(String filePath){<br \/>\nretMap = new HashMap&lt;String, Object&gt;();<br \/>\nFile file = new File(filePath);<br \/>\nif(file.isFile()){<br \/>\ntry {<\/p>\n<p>String tempFileName = file.getName();<\/p>\n<p>\/\/\u8bfb\u53d6fastDFS\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6<\/p>\n<p>ClassPathResource cpr = new ClassPathResource(\"fdfs_client.conf\");<\/p>\n<p>ClientGlobal.init(cpr.getClassLoader().getResource(\"fdfs_client.conf\").getPath());<\/p>\n<p>byte[] fileBuff = FastDFSUtil.getBytesFromFile(file);<\/p>\n<p>String fileId = \"\";<\/p>\n<p>\/\/\u622a\u53d6\u540e\u7f00<\/p>\n<p>String fileExtName = tempFileName.substring(tempFileName.lastIndexOf(\".\")+1);<\/p>\n<p>\/\/\u5efa\u7acb\u8fde\u63a5<\/p>\n<p>TrackerClient tracker = new TrackerClient();<\/p>\n<p>TrackerServer trackerServer = tracker.getConnection();<\/p>\n<p>StorageServer storageServer = null;<\/p>\n<p>StorageClient1 client = new StorageClient1(trackerServer, storageServer);<br \/>\n\/\/\u8bbe\u7f6e\u5143\u4fe1\u606f<br \/>\nNameValuePair[] metaList = new NameValuePair[3];<br \/>\n\/\/\u539f\u59cb\u6587\u4ef6\u540d\u79f0<br \/>\nmetaList[0] = new NameValuePair(\"fileName\", tempFileName);<br \/>\n\/\/\u6587\u4ef6\u540e\u7f00<br \/>\nmetaList[1] = new NameValuePair(\"fileExtName\", fileExtName);<br \/>\n\/\/\u6587\u4ef6\u5927\u5c0f<br \/>\nmetaList[2] = new NameValuePair(\"fileLength\", String.valueOf(file.length()));<br \/>\n\/\/\u5f00\u59cb\u4e0a\u4f20\u6587\u4ef6<br \/>\nfileId = client.upload_file1(fileBuff, fileExtName, metaList);<br \/>\nif(!fileId.equals(\"\")&amp;&amp;fileId!=null){<br \/>\nretMap.put(\"code\", \"0000\");<br \/>\nretMap.put(\"group\", fileId.substring(0,6));<br \/>\nretMap.put(\"msg\",fileId.substring(7,fileId.length()));<br \/>\n}else{<br \/>\nretMap.put(\"code\", \"0003\");<br \/>\nretMap.put(\"msg\",\"error:\u4e0a\u4f20\u5931\u8d25!\");<br \/>\n}<\/p>\n<p>} catch (Exception e) {<br \/>\ne.printStackTrace();<br \/>\nretMap.put(\"code\", \"0002\");<br \/>\nretMap.put(\"msg\",e.getMessage());<br \/>\n}<br \/>\n}else{<br \/>\nretMap.put(\"code\", \"0001\");<br \/>\nretMap.put(\"msg\",\"error:\u672c\u5730\u6587\u4ef6\u4e0d\u5b58\u5728!\");<br \/>\n}<br \/>\nreturn retMap;<br \/>\n}<\/p>\n<p>\/**<br \/>\n*<br \/>\n* Description:\u8fdc\u7a0b\u9009\u62e9\u4e0a\u4f20\u6587\u4ef6-\u901a\u8fc7MultipartFile<br \/>\n* @author: Chen<br \/>\n* @date: 2016\u5e7411\u67081\u65e5<br \/>\n* @param file \u6587\u4ef6\u6d41<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static Map&lt;String,Object&gt; upload(MultipartFile file){<br \/>\nretMap = new HashMap&lt;String, Object&gt;();<br \/>\ntry {<br \/>\nif(file.isEmpty()){<br \/>\nretMap.put(\"code\", \"0001\");<br \/>\nretMap.put(\"msg\",\"error:\u6587\u4ef6\u4e3a\u7a7a!\");<br \/>\n}else{<br \/>\nString tempFileName = file.getOriginalFilename();<br \/>\n\/\/\u8bfb\u53d6fastDFS\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6<br \/>\nClassPathResource cpr = new ClassPathResource(\"fdfs_client.conf\");<br \/>\nClientGlobal.init(cpr.getClassLoader().getResource(\"fdfs_client.conf\").getPath());<br \/>\nbyte[] fileBuff = file.getBytes();<br \/>\nString fileId = \"\";<br \/>\n\/\/\u622a\u53d6\u540e\u7f00<br \/>\nString fileExtName = tempFileName.substring(tempFileName.lastIndexOf(\".\")+1);<br \/>\n\/\/\u5efa\u7acb\u8fde\u63a5<br \/>\nTrackerClient tracker = new TrackerClient();<br \/>\nTrackerServer trackerServer = tracker.getConnection();<br \/>\nStorageServer storageServer = null;<br \/>\nStorageClient1 client = new StorageClient1(trackerServer, storageServer);<br \/>\n\/\/\u8bbe\u7f6e\u5143\u4fe1\u606f<br \/>\nNameValuePair[] metaList = new NameValuePair[3];<br \/>\n\/\/\u539f\u59cb\u6587\u4ef6\u540d\u79f0<br \/>\nmetaList[0] = new NameValuePair(\"fileName\", tempFileName);<br \/>\n\/\/\u6587\u4ef6\u540e\u7f00<br \/>\nmetaList[1] = new NameValuePair(\"fileExtName\", fileExtName);<br \/>\n\/\/\u6587\u4ef6\u5927\u5c0f<br \/>\nmetaList[2] = new NameValuePair(\"fileLength\", String.valueOf(file.getSize()));<br \/>\n\/\/\u5f00\u59cb\u4e0a\u4f20\u6587\u4ef6<br \/>\nfileId = client.upload_file1(fileBuff, fileExtName, metaList);<br \/>\nif(!fileId.equals(\"\")&amp;&amp;fileId!=null){<br \/>\nretMap.put(\"code\", \"0000\");<br \/>\nretMap.put(\"group\", fileId.substring(0,6));<br \/>\nretMap.put(\"msg\",fileId.substring(7,fileId.length()));<br \/>\n}else{<br \/>\nretMap.put(\"code\", \"0003\");<br \/>\nretMap.put(\"msg\",\"error:\u4e0a\u4f20\u5931\u8d25!\");<br \/>\n}<br \/>\n}<br \/>\n} catch (Exception e) {<br \/>\nretMap.put(\"code\", \"0002\");<br \/>\nretMap.put(\"msg\",\"error:\u6587\u4ef6\u4e0a\u4f20\u5931\u8d25!\");<br \/>\n}<br \/>\nreturn retMap;<br \/>\n}<\/p>\n<p>\/**<br \/>\n*<br \/>\n* Description:<br \/>\n* @author: Chen<br \/>\n* @date: 2016\u5e7411\u67081\u65e5<br \/>\n* @param response<br \/>\n* @param filepath \u6570\u636e\u5e93\u5b58\u7684\u6587\u4ef6\u8def\u5f84<br \/>\n* @param downname \u4e0b\u8f7d\u540e\u7684\u540d\u79f0<br \/>\n* filepath M00\/\u5f00\u5934\u7684\u6587\u4ef6\u8def\u5f84<br \/>\n* group \u6587\u4ef6\u6240\u5728\u7684\u7ec4 \u5982\uff1agroup0<br \/>\n* @throws IOException<br \/>\n*\/<br \/>\npublic static void download(HttpServletResponse response ,String group ,String filepath , String downname) throws IOException{<br \/>\n\/\/retMap = new HashMap&lt;String, Object&gt;();<br \/>\nPrintWriter print = response.getWriter();<br \/>\ntry {<br \/>\n\/\/\u8bfb\u53d6fastDFS\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6<br \/>\nClassPathResource cpr = new ClassPathResource(\"fdfs_client.conf\");<br \/>\nClientGlobal.init(cpr.getClassLoader().getResource(\"fdfs_client.conf\").getPath());<br \/>\nTrackerClient tracker = new TrackerClient();<br \/>\nTrackerServer trackerServer = tracker.getConnection();<br \/>\nStorageServer storageServer = null;<br \/>\nStorageClient storageClient = new StorageClient(trackerServer, storageServer);<br \/>\nbyte[] b = storageClient.download_file(group , filepath);<br \/>\nif(b==null){<br \/>\nSystem.out.println(\"Error1 : file not Found!\");<br \/>\nprint.write(\"Error1 : file not Found!\");<br \/>\n}else{<br \/>\nSystem.out.println(\"\u4e0b\u8f7d\u6587\u4ef6..\");<br \/>\ndownname = new String(downname.getBytes(\"utf-8\"), \"ISO8859-1\" );<br \/>\nresponse.setHeader(\"Content-Disposition\", \"attachment;fileName=\"+downname);<br \/>\nOutputStream out = response.getOutputStream();<br \/>\nout.write(b);<br \/>\nout.close();<br \/>\n}<br \/>\n} catch (Exception e) {<br \/>\ne.printStackTrace();<br \/>\nprint.write(\"Error2 : \"+e.getMessage());<br \/>\n}<br \/>\n}<\/p>\n<p>\/**<br \/>\n*<br \/>\n* Description:\u5220\u9664\u6587\u4ef6<br \/>\n* @author:\u00a0Chen<br \/>\n* @date: 2016\u5e7411\u670818\u65e5<br \/>\n* @param group \u6587\u4ef6\u5206\u7ec4, filepath \u5df2M00\/ \u5f00\u5934\u7684\u6587\u4ef6\u8def\u5f84<br \/>\n* @return<br \/>\n*\/<br \/>\npublic static Map&lt;String,Object&gt; delete(String group , String filepath){<br \/>\nretMap = new HashMap&lt;String, Object&gt;();<br \/>\ntry {<br \/>\n\/\/\u8bfb\u53d6fastDFS\u5ba2\u6237\u7aef\u914d\u7f6e\u6587\u4ef6<br \/>\nClassPathResource cpr = new ClassPathResource(\"fdfs_client.conf\");<br \/>\nClientGlobal.init(cpr.getClassLoader().getResource(\"fdfs_client.conf\").getPath());<br \/>\nTrackerClient tracker = new TrackerClient();<br \/>\nTrackerServer trackerServer = tracker.getConnection();<br \/>\nStorageServer storageServer = null;<br \/>\nStorageClient storageClient = new StorageClient(trackerServer, storageServer);<br \/>\nint i = storageClient.delete_file(group, filepath);<br \/>\nSystem.out.println( i==0 ? \"\u5220\u9664\u6210\u529f\" : \"\u5220\u9664\u5931\u8d25:\"+i);<br \/>\nif(i==0){<br \/>\nretMap.put(\"code\",\"0000\");<br \/>\nretMap.put(\"msg\",\"\u5220\u9664\u6210\u529f\uff01\");<br \/>\n}else{<br \/>\nretMap.put(\"code\",\"0001\");<br \/>\nretMap.put(\"msg\",\"\u6587\u4ef6\u4e0d\u5b58\u5728!\");<br \/>\n}<br \/>\n} catch (Exception e) {<br \/>\ne.printStackTrace();<br \/>\nretMap.put(\"code\",\"0002\");<br \/>\nretMap.put(\"msg\",\"\u5220\u9664\u5931\u8d25\uff01\");<br \/>\n}<br \/>\nreturn retMap;<\/p>\n<p>}<\/p>\n<p>public static byte[] getBytesFromFile(File f){<br \/>\nif (f == null) {<br \/>\nreturn null;<br \/>\n}<br \/>\ntry {<br \/>\nFileInputStream stream = new FileInputStream(f);<br \/>\nByteArrayOutputStream out = new ByteArrayOutputStream(1000);<br \/>\nbyte[] b = new byte[1000];<br \/>\nfor (int n;(n = stream.read(b)) != -1;) {<br \/>\nout.write(b, 0, n);<br \/>\n}<br \/>\nstream.close();<br \/>\nout.close();<br \/>\nreturn out.toByteArray();<br \/>\n} catch (IOException e) {<\/p>\n<p>}<br \/>\nreturn null;<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.chenweikang.top\">\u5de6\u624b\u4ee3\u7801\u53f3\u624b\u8bd7<\/a> &raquo; <a href=\"https:\/\/www.chenweikang.top\/?p=243\">FastDFS JAVA\u5ba2\u6237\u7aef\u7684\u4f7f\u7528<\/a><\/p><div class=\"__youshang\">\r\n            <div id=\"__youshang_popup\" class=\"wechat popup\" style=\"display: none;\">\r\n                <div class=\"head\">~\u8c22\u8c22\u6253\u8d4f~<\/div>\r\n                <div class=\"qrcode\"><div class=\"qrcode-li wechat\" ><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/wexin.png\" \/><\/div><div class=\"qrcode-li alipay\" style=\"display:none;\"><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/ali-pay.png\" \/><\/div><div class=\"qrcode-li hongbao\" style=\"display:none;\"><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/ali-hongbao.png\" \/><\/div><\/div>\r\n                <ul class=\"platform\"><li class=\"icon-wechat active\" data-bg-color=\"#05af4e\" data-thanks=\"~\u8c22\u8c22\u6253\u8d4f~\"><\/li><li class=\"icon-alipay \" data-bg-color=\"#00a2ea\" data-thanks=\"~\u8c22\u8c22\u6253\u8d4f~\"><\/li><li class=\"icon-hongbao \" data-bg-color=\"#dd5746\" data-thanks=\"<p>\u626b\u7801\u9886\u7ea2\u5305<\/p><p style='margin-top: 24px;'>\uff08\u4f59\u989d\u5b9d\u652f\u4ed8\u65f6\u53ef\u62b5\u73b0\uff09<\/p>\"><\/li><\/ul>\r\n            <\/div>\r\n            <a href=\"javascript:void(0);\" id=\"__youshang_btn\">\u8d4f<\/a>\r\n        <\/div>","protected":false},"excerpt":{"rendered":"<p>1.\u5f15\u7528fastdfs-client.jar \u5305 \u53ef\u4f7f\u7528maven\uff1a com.github.tobato fa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[20,42],"class_list":["post-243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-42"],"_links":{"self":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=243"}],"version-history":[{"count":0,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts\/243\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}