【第22期】观点:IT 行业加班,到底有没有价值?

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客户端(Python版)指南

最近做了一个分布式的项目用到了FastDFS,关于FastDFS这里就不阐述了,有兴趣了解的小伙伴,请到官网:http://bbs.chinaunix.net/forum-240-1.html。这里着...

搭建单机版fastDFS环境

1  需要先下载 相关的jar包  libfastcommon-1.0.7.tar.gz  nginx-1.8.0.tar.gz  FastDFSV5.05.tar.gz   fastdfs-ngin...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

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

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

FastDFS windows 客户端源码 (VS2005)

因为项目需要移值了fastdfs的客户端, 只测试了上传和下载. 基于的版本是 FastDFS v1.17 (google code上下载的) 附件是源码(VS2005工程) PS: com...

fastdfs 环境搭建使用及最佳实践

一、分布式文件系统 FastDFS 架构解析FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片、视频、文档等文件,许多大型互联网公司包括几个大的云网盘都在使用,感兴...

图片服务器fastDFS的搭建以及配置

搭建一个图片服务器

fastdfs+nginx安装详解

一、 安装 (一) 下载FastDFS安装包FastDFS官方论坛:http://www.csource.org 下载1:http://sourceforge.net/p...

c#图书馆管理系统源码

谁能给我一个

FastDFS实现文件上传下载实战

正好,淘淘商城讲这一块的时候,我又想起来当时老徐让我写过一个关于实现FastDFS实现文件上传下载的使用文档,当时结合我们的ITOO的视频系统和毕业论文系统,整理了一下,有根据网上查到的知识,总结了一...

SpringMVC整合fastdfs-client-java实现web文件上传下载

前言 上一篇博客记录了FastDFS v5.0.5在Linux CentOS 7中的安装与配置(分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置),本篇blog...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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