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

转载 2015年11月18日 16:47:08

调用的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. }   


版权声明:本文为博主原创文章,未经博主允许不得转载。合作请联系微信 sinosuperman。

FastDFS的配置、部署与API使用解读——设置FastDFS配置参数的两种方式

FastDFS的配置、部署与API使用解读——设置FastDFS配置参数的两种方式   一种方式是通过调用ClientGlobal类的初始化方法对配置文件进行加载,另一种是通过调用API逐一设置配...

JDK 1.7 java.io 源码学习之Closeable、Flushable、Appendable接口

Closeable、Flushable、Appendable
  • Rickesy
  • Rickesy
  • 2017年02月22日 15:08
  • 740

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

调用的API为: String[] upload_file( String group_name,//组名,不指定则可设为null long file_size,//文件大小,必须制...

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

调用的API为: String[] upload_file( String group_name,//组名,不指定则可设为null long file_size,//文件大小,必须制定 Upl...
  • Poechant
  • Poechant
  • 2011年11月18日 10:38
  • 14693

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

本文转载自:诗商·柳惊鸿CSDN博客,链接为:http://blog.csdn.net/poechant/article/details/7213536 转载目的仅仅为方便博主自己学习。   调...

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

本文来自 诗商·柳惊鸿 Poechant CSDN博客,转载请注明源地址:FastDFS的配置、部署与API使用解读(2)上传文件到FastDFS分布式文件系统的客户端代码 在阅读本文之前,...
  • Poechant
  • Poechant
  • 2011年11月18日 10:27
  • 32042

FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解

1、StorageClient与StorageClient1的区别 相信使用happy_fish的FastDFS的童鞋们,一定都熟悉StorageClient了,或者你熟悉的是StorageCl...

FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解

《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS的配置、部署与API使用解读——(1)入门使用教程 FastDFS的配置、部署与API使用解读——(2)Java...
  • Poechant
  • Poechant
  • 2012年01月18日 17:56
  • 29394

FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解

转载自:http://blog.csdn.net/poechant/article/details/7209313 《Poechant的FastDFS的配置、部署与API使用教程》 FastDFS...
  • lkx94
  • lkx94
  • 2015年08月05日 11:19
  • 1222

windows平台下使用Github(3 使用github客户端方式 上传和下载 )

windows平台下使用Github(3)对初次学习使用github的新手来说,第一手资料肯定是来源于网络的。然而,搜索的结果大多数都是在Mac平台下的命令行。不明觉厉有木有。在经过一天的摸索后,终于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
举报原因:
原因补充:

(最多只允许输入30个字)