FastDFS的配置、部署與API使用解讀(2)以位元組方式上傳檔案的客戶端程式碼
本文來自 詩商·柳驚鴻 Poechant CSDN部落格,轉載請註明源地址:FastDFS的配置、部署與API使用解讀(2)上傳檔案到FastDFS分散式檔案系統的客戶端程式碼
在閱讀本文之前,請您先通過《FastDFS的配置、部署與API使用解讀(1)Get Started with FastDFS》一文中給出的參考博文中的部署篇和測試篇來完成前期的準備工作。
1、下載FastDFS的API
FastDFS提供Java和PHP等語言的客戶端API。可以到FastDFS在Google Code的專案主頁 http://code.google.com/p/fastdfs/downloads/list 下載。本文以Java API為例。
2、呼叫API的上傳介面
通過Servlet得到InputStream、檔名稱和檔案長度,然後通過呼叫FastDFS提供的Java API把檔案上傳到FastDFS伺服器。下段程式碼中的getFileBuffer可參考本部落格上一篇博文。(by Poechant)
3、呼叫方式詳解
(1)客戶端與Tracker Server通訊
根據《FastDFS的配置、部署與API使用解讀(1)Get Started with FastDFS》一文中提供的FastDFS的工作原理,結合上面的程式碼,首先通過TrackerClient建構函式從全域性配置中獲取Tracker Servers的IP和埠初始化一個TrackerClient物件tracker,並與其建立連線,我們可以從API的原始碼中看到:
上述程式碼中ClientGlobal是一個提供很多靜態成員供外部讀取的類。通過tracker這個TrackerClient建立的與Tracker Server的連線,例項化了一個trackerServer物件。
(3)呼叫檔案操作API
這些操作包括upload、download、append、delete等。上例中提供的是上傳的例項。
在閱讀本文之前,請您先通過《FastDFS的配置、部署與API使用解讀(1)Get Started with FastDFS》一文中給出的參考博文中的部署篇和測試篇來完成前期的準備工作。
1、下載FastDFS的API
FastDFS提供Java和PHP等語言的客戶端API。可以到FastDFS在Google Code的專案主頁 http://code.google.com/p/fastdfs/downloads/list 下載。本文以Java API為例。
2、呼叫API的上傳介面
通過Servlet得到InputStream、檔名稱和檔案長度,然後通過呼叫FastDFS提供的Java API把檔案上傳到FastDFS伺服器。下段程式碼中的getFileBuffer可參考本部落格上一篇博文。(by Poechant)
/**
* Upload File to DFS.
* @param fileBuff, file to be uploaded.
* @param uploadFileName, the name of the file.
* @param fileLength, the length of the file.
* @return the file ID in DFS.
* @throws IOException
*/
public String uploadFile(InputStream inStream, String uploadFileName, long fileLength) throws IOException {
byte[] fileBuff = getFileBuffer(inStream, fileLength);
String fileId = "";
String fileExtName = "";
if (uploadFileName.contains(".")) {
fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1);
} else {
logger.warn("Fail to upload file, because the format of filename is illegal.");
return fileId;
}
//建立連線
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient1 client = new StorageClient1(trackerServer, storageServer);
//設定元資訊
NameValuePair[] metaList = new NameValuePair[3];
metaList[0] = new NameValuePair("fileName", uploadFileName);
metaList[1] = new NameValuePair("fileExtName", fileExtName);
metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength));
//上傳檔案
try {
fileId = client.upload_file1(fileBuff, fileExtName, metaList);
} catch (Exception e) {
logger.warn("Upload file \"" + uploadFileName + "\"fails");
}
trackerServer.close();
return fileId;
}
3、呼叫方式詳解
(1)客戶端與Tracker Server通訊
根據《FastDFS的配置、部署與API使用解讀(1)Get Started with FastDFS》一文中提供的FastDFS的工作原理,結合上面的程式碼,首先通過TrackerClient建構函式從全域性配置中獲取Tracker Servers的IP和埠初始化一個TrackerClient物件tracker,並與其建立連線,我們可以從API的原始碼中看到:
/**
* constructor with global tracker group
*/
public TrackerClient()
{
this.tracker_group = ClientGlobal.g_tracker_group;
}
/**
* constructor with specified tracker group
* @param tracker_group the tracker group object
*/
public TrackerClient(TrackerGroup tracker_group)
{
this.tracker_group = tracker_group;
}
上述程式碼中ClientGlobal是一個提供很多靜態成員供外部讀取的類。通過tracker這個TrackerClient建立的與Tracker Server的連線,例項化了一個trackerServer物件。
(2)客戶端與Storage Server通訊
通過trackerServer取得某一個可用的Storage Server的地址並用其例項化一個StorageClient1物件。這樣就完成了FastDFS的客戶端呼叫上傳、下載、刪除等所有操作的前期建立連線的工作。(3)呼叫檔案操作API
這些操作包括upload、download、append、delete等。上例中提供的是上傳的例項。
本文來自 詩商·柳驚鴻 Poechant CSDN部落格,轉載請註明源地址:FastDFS的配置、部署與API使用解讀(2)Java API:根據InputStream、檔名、檔案長度上傳檔案
-
相關文章
- FastDFS的配置、部署與API使用解讀(3)以流的方式上傳檔案的客戶端程式碼ASTAPI客戶端
- FastDFS的配置、部署與API使用解讀(8)FastDFS多種檔案上傳介面詳解ASTAPI
- FastDFS的配置、部署與API使用解讀(1)Get Started with FastDFSASTAPI
- FastDFS的配置、部署與API使用解讀(7)Nginx的FastDFS模組ASTAPINginx
- FastDFS的配置、部署與API使用解讀(6)FastDFS配置詳解之Storage配置ASTAPI
- FastDFS的配置、部署與API使用解讀(5)FastDFS配置詳解之Tracker配置ASTAPI
- FastDFS的配置、部署與API使用解讀(4)FastDFS配置詳解之Client配置ASTAPIclient
- 使用java呼叫fastDFS客戶端進行靜態資原始檔上傳JavaAST客戶端
- 以 Laravel 的方式呼叫 ai 客戶端LaravelAI客戶端
- 客戶端配置檔案tnsname.ora客戶端
- 一個端到端的基於 form 表單的檔案上傳程式,包含客戶端和伺服器端ORM客戶端伺服器
- Tivoli AIX客戶端配置檔案的設定AI客戶端
- 實現上傳(增刪)多個檔案的客戶端寫法。 (轉)客戶端
- 桌面雲的客戶端與接入方式客戶端
- 利用程序池給客戶端傳檔案客戶端
- 郵件客戶端的配置使用客戶端
- 檔案下載之斷點續傳(客戶端與服務端的實現)斷點客戶端服務端
- 檔案上傳——客戶端檢測繞過(JavaScript檢測)(一)客戶端JavaScript
- 客戶端svn上傳後,原始檔案在伺服器的什麼位置?客戶端伺服器
- 分散式檔案儲存FastDFS(七)FastDFS配置檔案詳解分散式AST
- 位元組碼檔案結構詳解
- zookeeper Java客戶端API的使用方法Java客戶端API
- 位元組碼檔案解剖
- zookeeper的Java客戶端APIJava客戶端API
- 一文搞定FastDFS分散式檔案系統配置與部署AST分散式
- 關於檔案上傳。以上傳人來設定限額,或者以每天總額度,或者可以設定同時上傳的客戶端總數。客戶端
- OSSEC服務端配置客戶端批次部署方案服務端客戶端
- 檔案上傳的幾種方式
- FastDFS-nginx外掛作為FastDFS客戶端訪問ASTNginx客戶端
- SecureFX for Mac(跨平臺檔案傳輸客戶端)Mac客戶端
- 利用執行緒池給客戶端傳檔案執行緒客戶端
- OutlookAnywhere客戶端配置詳解客戶端
- Asterisk-WebRTC客戶端的部署ASTWeb客戶端
- Zookeeper 客戶端 API客戶端API
- FastDFS伺服器叢集部署和整合客戶端到SpringBootAST伺服器客戶端Spring Boot
- 這些OAuth2客戶端的認證方式你未必瞭解OAuth客戶端
- 使用electron和vue,以ipc通訊的方式構建客戶端版本的掘金首頁Vue客戶端
- 客戶端網路配置上的一點說明客戶端