文档章节

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

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:29
字数 258
阅读 11
收藏 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分布式文件系统》

1、FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS 内容:讲解FastDFS的背景、基本原理,并讲述基本的配置、部署和测试的内容。 2、FastDFS的配置、部署与API使用解读(2)...

晨曦之光
2012/04/24
327
0
FastDFS的配置、部署与API使用解读(6)FastDFS配置详解之Storage配置

《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS的配置、部署与API使用解读——(1)入门使用教程 FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、...

晨曦之光
2012/04/24
448
0
FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解

《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS的配置、部署与API使用解读——(1)入门使用教程 FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、...

晨曦之光
2012/04/24
2.9K
0
FastDFS的配置、部署与API使用解读(5)FastDFS配置详解之Tracker配置

《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS的配置、部署与API使用解读——(1)入门使用教程 FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、...

晨曦之光
2012/04/24
375
0
FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码

本文来自 诗商·柳惊鸿 Poechant CSDN博客,转载请注明源地址: FastDFS的配置、部署与API使用解读(2)上传文件到FastDFS分布式文件系统的客户端代码 在阅读本文之前,请您先通过 《FastDFS...

晨曦之光
2012/04/24
432
0

没有更多内容

加载失败,请刷新页面

加载更多

2018最新Web前端经典面试试题及答案

javascript: JavaScript中如何检测一个变量是一个String类型?请写出函数实现 typeof(obj) === "string" typeof obj === "string" obj.constructor === String 请用js去除字符串空格? 方法一...

Jack088
13分钟前
0
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
18分钟前
0
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
18分钟前
3
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
37分钟前
6
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
48分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部