<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 1. 命令行api介紹 FastDFS提供了可用于運維測試的命令行api,下面進行介紹: ### 1.1 fastdfs服務管理 1. tracker進程服務管理腳本 ~~~ /etc/init.d/fdfs_trackerd [start|stop|restart] ~~~ 2. storage進程服務管理腳本 ~~~ /etc/init.d/fdfs_storaged [start|stop|restart] ~~~ ### 1.2 集群信息 用于查看集群信息,包括:tracker信息、storage信息、group信息以及集群運行狀況;命令可以在任意一臺storage 節點上執行 ~~~ /usr/bin/fdfs_monitor /etc/fdfs/storage.conf ~~~ 如下圖,集群由兩個tracker,兩個group。其中group2中的storage1處于下線不可用狀態 ![](https://box.kancloud.cn/dcc883be70617983f3e7d593e11991a0_1901x619.png) ![](https://box.kancloud.cn/cda7cc8af2bec8d48edc07acff4fb1e3_1540x612.png) ### 1.3 刪除storage節點 ~~~ /usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 192.168.56.11 ~~~ ### 1.4 文件上傳 ~~~ /usr/bin/fdfs_upload_file /etc/fdfs/client.conf [文件名] ~~~ 例如上傳nginx-1.14.0.tar.gz文件 ~~~ /usr/bin/fdfs_upload_file /etc/fdfs/client.conf ./nginx-1.14.0.tar.gz ~~~ 返回包含文件在fastdfs存儲路徑(store_path0下)信息和存儲文件名信息 ~~~ group1/M00/00/00/wKg4CltFU7WAAzX-AA-B0CmJB5A.tar.gz ~~~ 此時可以通過瀏覽器訪問剛剛上傳的文件 ![](https://box.kancloud.cn/a90d2f4f1162e57ff0501f52511678a3_1831x737.png) ### 1.5 文件下載 ~~~ /usr/bin/fdfs_download_file <config_file> <file_id> [local_filename] [<download_offset> <download_bytes>] ~~~ 例如,下載fastdfs中的nginx(wKg4CltFWAKADvr_AA-B0CmJB5A.tar.gz )到本地,指定下載的文件名文件名為nginxdownload.tar.gz ~~~ /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKg4CltFWAKADvr_AA-B0CmJB5A.tar.gz nginxdownload.tar.gz ~~~ ### 1.6 文件刪除 ~~~ /usr/bin/fdfs_delete_file <config_file> <file_id> ~~~ 例如刪除上邊上傳的nginx ~~~ /usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKg4CltFU7WAAzX-AA-B0CmJB5A.tar.gz ~~~ ## 2. java api 使用 FastDFS提供了良好的java api接口,源碼GitHub下載地址:https://github.com/happyfish100/fastdfs-client-java.git 。 引入api的方式有兩種: ### 2.1 引入api 1. ant源碼構建 ~~~ ant clean package ~~~ 2. maven源碼構建 ~~~ mvn clean install ~~~ pom.xml 依賴添加 ~~~ <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27-SNAPSHOT</version> </dependency> ~~~ ### 2.2 配置 添加配置文件fdfs_client.conf,增加以下配置 ~~~ connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 80 http.anti_steal_token = no http.secret_key = FastDFS1234567890 tracker_server = 192.168.56.10:22122 tracker_server = 192.168.56.11:22122 ~~~ http.anti_steal_token:配置防盜鏈,no表示不開啟(詳細參考FastDFS防盜鏈一節) http.secret_key:防盜鏈密碼 tracker_server:tracker連接信息,有多少tracker就配置幾個 ### 2.3 api 簡單使用 單例模式,無線程池;讀取classpath下fdfs_client.conf配置文件 ~~~ package com.aixin.tuna.fdfs; import org.csource.fastdfs.*; import java.sql.Connection; import java.sql.SQLException; /** * Created by dailin on 2018/7/11. */ public class FdfsUtil { static class Nested { private static TrackerServer trackerServer =null; private static StorageServer storageServer = null; private static StorageClient storageClient = null; static { try { ClientGlobal.init("fdfs_client.conf"); TrackerClient tracker = new TrackerClient(); trackerServer = tracker.getConnection(); storageClient = new StorageClient(trackerServer, storageServer); }catch (Exception e) { e.printStackTrace(); } } } //獲取單例 public static StorageClient getStorageClient() { return Nested.storageClient; } } ~~~ 測試: ~~~ package fdfs; import java.io.FileOutputStream; import java.io.OutputStream; import com.aixin.tuna.fdfs.FdfsUtil; import org.csource.common.NameValuePair; import org.csource.fastdfs.FileInfo; import org.csource.fastdfs.StorageClient; import org.junit.Before; import org.junit.Test; public class TestFastDfs { private StorageClient storageClient; @Before public void init() { this.storageClient = FdfsUtil.getStorageClient(); } /** * 測試文件上傳,得到上傳后的文件路徑及文件名稱 */ @Test public void testUpload() { try { String local_filename = "C:\\Users\\1\\Desktop\\1.png"; //本地文件路徑 String[] file = storageClient.upload_file(local_filename, "png", null); System.out.println(file.length); System.out.println("組名:" + file[0]); System.out.println("路徑: " + file[1]); } catch (Exception e) { e.printStackTrace(); } } /** * 測試文件下載,根據文件所在group和文件路徑信息訪問文件 */ @Test public void testDownload() { try { String groupName = "group2"; String filePath = "M00/00/00/wKg4C1tFegGAK7WZAADdeFFxlXA481.png"; byte[] bytes = storageClient.download_file(groupName, filePath); String storePath = "C:\\Users\\1\\Desktop\\download1.png"; OutputStream out = new FileOutputStream(storePath); out.write(bytes); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取文件基本信息,根據文件所在group和文件路徑信息訪問文件 */ @Test public void testGetFileInfo() { try { String groupName = "group2"; String filePath = "M00/00/00/wKg4C1tFegGAK7WZAADdeFFxlXA481.png"; FileInfo file = storageClient.get_file_info(groupName, filePath); System.out.println("source_ip:" + file.getSourceIpAddr()); System.out.println("file_size:" + file.getFileSize()); System.out.println("upload_time:" + file.getCreateTimestamp()); System.out.println(file.toString()); } catch (Exception e) { e.printStackTrace(); } } @Test public void testGetFileMatedata() { try { String groupName = "group2"; String filePath = "M00/00/00/wKg4C1tFmmqATh8jAA-B0CmJB5A.tar.gz"; NameValuePair nvps[] = storageClient.get_metadata(groupName, filePath); if (null != nvps && nvps.length > 0) { for (NameValuePair nvp : nvps) { System.out.println(nvp.getName() + ":" + nvp.getValue()); } } } catch (Exception e) { e.printStackTrace(); } } /** * 刪除文件,根據文件所在group和文件路徑信息訪問文件 */ @Test public void testDelete() { try { String groupName = "group2"; String filePath = "M00/00/00/wKg4C1tFlT6ASyqKAADdeFFxlXA080.png"; int i = storageClient.delete_file(groupName, filePath); System.out.println(i == 0 ? "刪除成功" : "刪除失敗:" + i); } catch (Exception e) { e.printStackTrace(); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看