上一篇,了解了FastDFS是什么东东,一般稍微大一的网站都会做文件分离存储,FastDFS这轻型的分布式文件存储方式,非常有用。

此图片截取博友(张占岭)的勿喷

下面我们就了解一下,FastDFS在.net平台下如何实现上传和下载功能。

咱用了WINFOM实现了一个简单的DEMO:

左侧为tracker可以分配多个,换行显示

右侧为storage列表,这里只做显示,可以不填

1、点击“连接FASTDFS”按钮,系统将连接fastdfs服务器

 ConnectionManager.Initialize(trackerIPs);
storageNode = FastDFSClient.GetStorageNode("group1");

如果Fastdfs服务器配置正确,你会看到“连接成功”的字样。

2、点击“选择文件并上传”按钮,文件将会把文件上传至fastdfs服务器

 OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "文本文件|*.*|png|*.png|JPG|*.jpg|JPEG|*.jpeg|所有文件|*.*";
openFileDialog.RestoreDirectory = true;
openFileDialog.FilterIndex = 1;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fName = openFileDialog.FileName;
byte[] content = null;
/* FileInfo fileInfo = new FileInfo(filePath);
return fileInfo.Length;*/
FileStream streamUpload = new FileStream(fName, FileMode.Open);
using (BinaryReader reader = new BinaryReader(streamUpload))
{
content = reader.ReadBytes((int)streamUpload.Length);
}
textBox1.Text = fName; //主文件
string fileName = FastDFSClient.UploadFile(storageNode, content, "png");
var info = FastDFSClient.GetFileInfo(storageNode, fileName);
//从文件
var slaveFileName = FastDFSClient.UploadSlaveFile("group1", content, fileName, "_120x120", "png");
var slaveInfo = FastDFSClient.GetFileInfo(storageNode, slaveFileName);
listBox1.Items.Add(string.Format("主文件:http://{0}:8080/group1/{1}", trackerIPs[0].Address, fileName));
listBox1.Items.Add(string.Format("主文件大小:{0}KB,创建时间:{1}", info.FileSize, info.CreateTime));
listBox1.Items.Add(string.Format("从文件:http://{0}:8080/group1/{1}", trackerIPs[0].Address, slaveFileName));
listBox1.Items.Add(string.Format("从文件大小:{0}KB,创建时间:{1}", slaveInfo.FileSize, slaveInfo.CreateTime)); }

这时候你会在界面中看到你上传的文件返回的文件访问地址,你可以尝试在网页中打开,前提是上一篇的Nginx一定要配对。

对于“主文件”和“从文件”的概念,通常是用在图片文件的存储上,例如缩略图,就可以从文件进行存储。这个意义不是很大了解一下就行。

这个界面参考别的博友的,可惜他没有代码,我帮他补上,小酌一下勿喷,哈哈

程序代码: http://pan.baidu.com/s/1kT4D1rx

FastDFS在.Net平台上的使用的更多相关文章

  1. 【Win 10应用开发】如何知道UAP在哪个平台上运行

    面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行.尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑.比 ...

  2. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序

    关于如何在非微软平台上建立高信任的SharePoint应用程序 原文 :http://blogs.msdn.com/b/kaevans/archive/2014/07/14/high-trust-sh ...

  3. JVM 平台上的各种语言的开发指南

    JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...

  4. 在Windows平台上安装Node.js及NPM模块管理

    1. 下载Node.js官方Windows版程序:http://nodejs.org/#download    从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...

  5. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率

    1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...

  6. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySql+PHP) Part II

    接着上一节继续搭建我们的LNMP平台,接下来我们安装PHP相关的服务 sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5- ...

  7. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySQL+PHP) Part IV

    接下来我们去下载 WorePress 用最新的 3.7.1 下载地址是:http://cn.wordpress.org/wordpress-3.7.1-zh_CN.zip 我们先建立一个文件夹 /va ...

  8. 随笔之Android平台上的进程调度探讨

    http://blog.csdn.net/innost/article/details/6940136 随笔之Android平台上的进程调度探讨 一由来 最近在翻阅MediaProvider的时候,突 ...

  9. 第二步 在D2RQ平台上配置jena环境

    第二步 在D2RQ平台上配置jena环境 2013年10月16日 9:48:53 搞了这么长时间语义,只用过protege这样的工具,一直没有落实到实际代码上.jena也看过好久了,总认为是hp公司的 ...

随机推荐

  1. Debian下安装deb格式安装包

    dpkg -i 软件包名称 就好啦 下面是相应链接: http://blog.csdn.net/lhf_tiger/article/details/7493400

  2. 怎样在python中获取时间?

    from time import strftime date = strftime('%y%m%d') hour = strftime('%H%M%S')

  3. Android系列----JUnit单元测试的使用

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  4. JMeter学习(五)检查点

    JMeter也有像LR中的检查点,本篇就来介绍下JMeter的检查点如何去实现. JMeter里面的检查点通过添加断言来完成. 检查点:上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jme ...

  5. Hibernate Java、Hibernate、SQL 之间数据类型转换

    Hibernate映射类型 Java类型 标准SQL类型  integer  java.lang.Integer  integer  long  java.lang.Long  bigint  sho ...

  6. $apply方法的作用

    $apply方法是用来触发脏检查,它在控制器里监听一个变量,每当这个变量的值改变的时候,它会去与最初的值做一次比较,然后HTML页面就会及时更新该变量的值(将最新的值赋值到html页面的view层或M ...

  7. 08Spring_Spring和junit测试集成

    第一步: 在项目导入 spring-test-3.2.0.RELEASE.jar 第二步: 编写测试类

  8. .net程序集强命名(签名)

    要想得到强签名的dll有两种情况: 1.给项目添加强命名 在你的项目右键->属性->签名,勾选“为程序集签名”,新建 或 浏览已经新建过的.pfx文件,然后重新build项目,生成的dll ...

  9. 去他的效应(what-the-hell effect)与自我放纵

    去他的 效应(what-the-hell effect)与自我放纵 为什么写这篇文章: 对于我来说,但我感到疲惫——"无意拿起"手机,对自己说"随便看看"——但 ...

  10. 高性能网站性能优化与系统架构(ZT)

    转载请保留出处:俊麟 Michael’s blog (http://space.itpub.net/7311285/viewspace-97) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo ...