FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)
1、StorageClient與StorageClient1的區(qū)別
相信使用happy_fish的FastDFS的童鞋們,一定都熟悉StorageClient了,或者你熟悉的是StorageClient1,兩者有什么區(qū)別呢?
我們?cè)谇懊娴膸灼┪闹幸呀?jīng)知道,FastDFS存儲(chǔ)文件時(shí),是將 FastDFS存儲(chǔ)到某個(gè)Group的某個(gè)Storage的某個(gè)路徑下。如果你在Storage Server上設(shè)置的是兩層目錄結(jié)構(gòu)的話,則一個(gè)文件上傳到FastDFS后的File ID一般形如"group1/M01/00/2A/rBAsVk8ORy2Nf9EoAAIRKo2Da7U901.jpg"形式。其中的 “group1”稱為Group Name,后段的“M01/00/08/rBAsVk8ORy2Nf9EoAAlRKo2Da7U901.jpg"稱為File Name。
知道了這些后,我們就可以討論StorageClient和 StorageClient1的區(qū)別了。StorageClient中是將File ID用Group Name和File Name兩部分來(lái)表示的,而StorageClient1中是將Group Name和File Name統(tǒng)一起來(lái)處理的。其實(shí)通過(guò)分析FastDFS Java Client的源碼可以發(fā)現(xiàn),StorageClient1是StorageClient的一個(gè)子類。
?
public class StorageClient1 extends StorageClient { ... }?
?StorageClient1中的upload_file1(...)方法的實(shí)現(xiàn),都是在調(diào)用this.upload_file(...),將返回的Group Name和File Name組合起來(lái)返回的。
2、多種文件上傳接口
目前FastDFS Java Client API的最新版本是1.19,該版本中有如下這些上傳API(這里以Storage Client1為例):
?
/*方法1*/upload_file1(byte[] file_buff, String file_ext_name, NameValuePair[] meta_list); /*方法2*/upload_file1(String group_name, byte[] file_buff, String file_ext_name, NameValuePair[] meta_list); /*方法3*/upload_file1(String master_file_id, String prefix_name, byte[] file_buff, int offset, int length, String file_ext_name, NameValuePair[] meta_list); /*方法4*/upload_file1(String master_file_id, String prefix_name, byte[] file_buff, String file_ext_name, NameValuePair[] meta_list); /*方法5*/upload_file1(String group_name, long file_size, UploadCallback callback, String file_ext_name, NameValuePair[] meta_list); /*方法6*/upload_file1(String master_file_id, String prefix_name, long file_size, UploadCallback callback, String file_ext_name, NameValuePair[] meta_list); /*方法7*/upload_file1(String local_file_name, String file_ext_name, NameValuePair[] meta_list); /*方法8*/upload_file1(String group_name, String local_file_name, String file_ext_name, NameValuePair[] meta_list); /*方法9*/upload_file1(String master_file_id, String prefix_name, String local_file_name, String file_ext_name, NameValuePair[] meta_list);?
?
(1)多種上傳格式
方法1-4是上傳File Buffer(字節(jié)數(shù)組);方法5-6是通過(guò)回調(diào)的方式上傳文件流(以后的文章中會(huì)解釋),方法7-9是上傳本地文件。
(2)多種上傳方式
下面我們把這幾種上傳的接口的參數(shù)總結(jié)一下,方便大家使用API。
?
| ? | Group Name | Extension | Meta List | Master File ID | Prefix Name | Offset | Length | Size | Format |
| Method 1 | ? | √ | √ | ? | ? | ? | ? | ? | Buffer |
| Method 2 | √ | √ | √ | ? | ? | ? | ? | ? | Buffer |
| Method 3 | ? | √ | √ | √ | √ | √ | √ | ? | Buffer |
| Method 4 | ? | √ | √ | √ | √ | ? | ? | ? | Buffer |
| Method 5 | √ | √ | √ | ? | ? | ? | ? | √ | Stream |
| Method 6 | ? | √ | √ | √ | √ | ? | ? | √ | Stream |
| Method 7 | ? | √ | √ | ? | ? | ? | ? | ? | Local |
| Method 8 | √ | √ | √ | ? | ? | ? | ? | ? | Local |
| Method 9 | ? | √ | √ | √ | √ | ? | ? | ? | Local |
所有方式都可以攜帶參數(shù)extension和meta list。另外通過(guò)回調(diào)上傳流的方式,必須給出文件大小的參數(shù)。
StorageClient1的上傳方法,返回值是String,StorageClient的上傳方法,返回值是String[]。
?
轉(zhuǎn)載于:https://www.cnblogs.com/sandea/p/4439295.html
總結(jié)
以上是生活随笔為你收集整理的FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《C语言及程序设计》实践参考——乘法口诀
- 下一篇: apache日志轮转