艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(四)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)
该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开源,作者是英国的,开发时间5年多,框架很稳定。
项目地址:http://www.51aspx.com/code/MSDCArtMengFileUpload
咨询qq:286275658
文件下载的思路
演示程序下载地址:http://pan.baidu.com/s/1geVfmcr

点击左侧列表的代码:
itemID = listBox2.Text;
lblID.Text = listBox2.Text;
Reload(itemID);
private void Reload(string destDir)
{
flowLayoutPanel1.Controls.Clear();
FileContract body = new FileContract();
body.Comment = destDir;
FileDirectory docDir = AppOutter.TcpConn.SendReceiveObject<FileContract, FileDirectory>(, body);
;
//给当前文件列表变量赋值
CurrentFileList = docDir.FileList;
foreach (FileDetail fileDetail in docDir.FileList)
{
ImageItemButton itemButton = new ImageItemButton();
string extension = Path.GetExtension(fileDetail.Name);
//在参数中把扩展名转化为小写
itemButton.ButtonImage = GetIcoByExtension(extension.ToLower());
itemButton.ButtonText = fileDetail.Name;
itemButton.Name = "ItemButton" + i;
//把文件信息赋值给显示控件
itemButton.FileInfo = fileDetail;
itemButton.NewClick += new EventHandler<EventArgs>(itemButton_NewClick);
itemButton.NewMouseLeave += new EventHandler<EventArgs>(itemButton_NewMouseLeave);
itemButton.NewMouseHover += new EventHandler<EventArgs>(itemButton_NewMouseHover);
//文件下载事件
itemButton.NewDownFile += new EventHandler<FileEventArgs>(itemButton_NewDownFile);
itemButton.NewOpenFile += new EventHandler<FileEventArgs>(itemButton_NewOpenFile);
itemButton.NewDoubleClick += new EventHandler<FileEventArgs>(itemButton_NewDoubleClick);
itemButton.NewRemoveFile += new EventHandler<FileEventArgs>(itemButton_NewRemoveFile);
this.flowLayoutPanel1.Controls.Add(itemButton);
i++;
}
//加载当前文件夹下的内容
)
{
Label label = new Label();
label.Text = "欢迎使用文件上传下载系统";
label.Width = ;
label.Height = ;
label.ForeColor = Color.Blue;
label.Font = , label.Font.Style);
this.flowLayoutPanel1.Controls.Add(label);
}
}
点击左侧列表后,会把相对应的子文件夹名(路径名),传递给服务器。服务器根据子文件夹名,获取子文件夹中文件列表,发送给客户端,客户端进行显示。
用户在右侧列表中,点击某个文件,获取文件名。并根据路径名和文件名,向服务器请求下载该文件
代码大致如下:
void itemButton_NewDownFile(object sender, FileEventArgs e)
{
openFlag = false;
string fileName = e.FileInfo.Name;
long fileSize = e.FileInfo.Size;
ulong theFileSize = Convert.ToUInt32(fileSize);
//获取当前文件扩展名
string extentName = Path.GetExtension(fileName);
try
{
string savePath = FileHelper.GetPathToSave("选择保存路径", fileName, null);
if (savePath != null)
{
//如果在弹出窗口中,用户改动了名字,需要手动加上扩展名
if (!savePath.EndsWith(extentName))
{
savePath = savePath + extentName;
}
//取得目录所在的相对位置 如: 201011\123456\文件.txt
string fileUri = itemID + @"\" + fileName;
try
{
FileInfoContract contract = new FileInfoContract(savePath, fileUri);
AppOutter.TcpConn.SendObject("DownloadFile", contract);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
qq:286275658
艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(四)的更多相关文章
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- Linux文件系统管理 开机自动挂载及fstab文件修复
概述 开机自动挂载及fstab文件修复 开机自动挂载 实现开机后自动挂载,就需要修改系统的自动挂载文件 /etc/fstab.因为系统就是依赖这个文件决定启动时加载的文件系统的.通过vi 打开/etc ...
- [QuickX]xcode运行Quick-cocos2d-x项目时自动更新lua资源文件
1.项目设置 build settings ->build options ->Scan all source files and Includes = YES 2.加入script (1 ...
- winform自动更新并实现文件的批量异步下载
public partial class update : Form { private WebClient client; int downfilenum = 0; ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法
首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion ...
- Winform(C#.NET)自动更新组件的使用及部分功能实现
声明:核心功能的实现是由园子里圣殿骑士大哥写的,本人是基于他核心代码,按照自己需求进行修改的. 而AutoUpdaterService.xml文件生成工具是基于评论#215楼 ptangbao的代 ...
- 我的Vim配置(自动补全/树形文件浏览)
配置文件的下载路径在这里 http://files.cnblogs.com/files/oloroso/vim.configure.xz.gz 这实际上是一个 xz 格式的文件,添加的 gz 文件后 ...
随机推荐
- 关于AngularJs,数据绑定与自定义验证
最近开始着手学起了Angular,抱着好奇的心情开始研究了起来.忽然发现angular可以巧妙而方便的进行数据的绑定验证啊什么的.(当然,我只是刚开始学,所有可能有更强大的功能,只是我还没有看到) 那 ...
- HTML 5 视频
HTML 5 视频 ======================================================================================= 如今 ...
- tomcat源码分析(三)一次http请求的旅行-从Socket说起
p { margin-bottom: 0.25cm; line-height: 120% } tomcat源码分析(三)一次http请求的旅行 在http请求旅行之前,我们先来准备下我们所需要的工具. ...
- 复旦高等代数 I(16级)思考题
思考题的说明 一.本学期高代I的思考题面向16级的同学,将不定期地进行更新; 二.欢迎16级的同学通过微信或书面方式提供解答图片或纸质文件给我,优秀的解答可以分享给大家: 三.请大家先独立解答思考题, ...
- maven添加sqlserver的jdbc驱动包
http://search.maven.org/中没有sqlserver的jdbc驱动,所以需要本地安装sqljdbc的jar包,然后再在pom里面引入 Step 1 在微软官网下载sqljdbc的j ...
- mysql的分区和分表
分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中. mysql支持的分区类型包括Range.List.Hash.Key,其中Range比较常用: RANGE分区:基于属于一个给定连续区 ...
- Solr搭建大数据查询平台
参考文章:http://www.freebuf.com/articles/database/100423.html 对上面链接的补充: solr-5.5.0版本已被删除,新url:http://mir ...
- sprint2的总结及团队贡献分
本次sprint做了订餐方法,用户可以通过搜索餐桌号进行点餐,查看已点的东西,也可以删除自己不想要的,当订单进入厨房时,厨房根据订单的顺序先后排列做餐,用户也可以通过扫描餐桌的二维码进行点餐. 148 ...
- python成长之路【第十四篇】:HTML初步认识
HTML介绍 HTML是负责描述文档语义的语言.它是纯文本文件,用一些标签来描述文字的语义,这些标签在浏览器里面是看不到的,所以称为"超文本".所以就是"超文本标记语言& ...
- 对 OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 一文的理解
一点最重要的学习方法: 当你读一篇论文读不懂时,如果又读了两遍还是懵懵懂懂时怎么办???方法就是别自己死磕了,去百度一下,如果是很好的论文,大多数肯定已经有人读过并作为笔记了的,比如我现在就把我读过 ...