文档章节

FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:29
字数 258
阅读 8
收藏 0

调用的API为:

String[] upload_file(

String group_name,//组名,不指定则可设为null

long file_size,//文件大小,必须制定

UploadCallback callback,//回调

String file_ext_name,

NameValuePair[] meta_list

)


  1. /** 
  2.  * Upload File to DFS, directly transferring java.io.InputStream to java.io.OutStream 
  3.  * @author Poechant 
  4.  * @email zhongchao.ustc@gmail.com 
  5.  * @param fileBuff, file to be uploaded. 
  6.  * @param uploadFileName, the name of the file. 
  7.  * @param fileLength, the length of the file. 
  8.  * @return the file ID in DFS. 
  9.  * @throws IOException  
  10.  */  
  11. public String[] uploadFileByStream(InputStream inStream, String uploadFileName, long fileLength) throws IOException {  
  12.       
  13.     String[] results = null;  
  14.     String fileExtName = "";  
  15.     if (uploadFileName.contains(".")) {  
  16.         fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1);  
  17.     } else {  
  18.         logger.warn("Fail to upload file, because the format of filename is illegal.");  
  19.         return results;  
  20.     }  
  21.       
  22.     TrackerClient tracker = new TrackerClient();  
  23.        TrackerServer trackerServer = tracker.getConnection();  
  24.        StorageServer storageServer = null;  
  25.        StorageClient1 client = new StorageClient1(trackerServer, storageServer);  
  26.          
  27.        NameValuePair[] metaList = new NameValuePair[3];  
  28.        metaList[0] = new NameValuePair("fileName", uploadFileName);  
  29.        metaList[1] = new NameValuePair("fileExtName", fileExtName);  
  30.        metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength));  
  31.          
  32.        try {  
  33.         // results[0]: groupName, results[1]: remoteFilename.  
  34.         results = client.upload_file(null, fileLength, new UploadFileSender(inStream), fileExtName, metaList);  
  35.     } catch (Exception e) {  
  36.         logger.warn("Upload file \"" + uploadFileName + "\"fails");  
  37.     }  
  38.          
  39.         trackerServer.close();  
  40.       
  41.     return results;       
  42. }  

其中的UploadFileSender是一个实现了UploadCallback接口的类:

  1. private static class UploadFileSender implements UploadCallback {  
  2.       
  3.     private InputStream inStream;  
  4.       
  5.     public UploadFileSender(InputStream inStream) {  
  6.         this.inStream = inStream;  
  7.     }  
  8.       
  9.     public int send(OutputStream out) throws IOException {  
  10.         int readBytes;  
  11.         while((readBytes = inStream.read()) > 0) {  
  12.             out.write(readBytes);  
  13.         }  
  14.         return 0;  
  15.     }  
  16. }   

本文转载自:http://blog.csdn.net/yuwenruli/article/details/8469153

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
FastDFS的配置、部署与API使用解读 (1)

1、背景 FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。该开源项目的主页是 http://code.google.com/p/fastdfs 。可以通过fastdfs...

吾爱
2012/12/04
0
0
用FastDFS一步步搭建文件管理系统

一、FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装的FastDFS Java API:https://github.com/...

JackFace
04/10
0
0
Centos 7 搭建 FastDFS文件管理系统

一、FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装的FastDFS Java API:https://github.com/...

欧虞山
09/05
0
0
Fastdfs分布式文件存储系统架构剖析及分布式集群环境的配置

===============分布式文件存储系统Fastdfs架构解析======================== FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能...

xiejunbo
2015/06/30
0
0
使用FastDFS搭建图片服务器(单实例)

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地...

haoyuehong
09/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
3
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部