艺萌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 文件后 ...
随机推荐
- Flesch Reading Ease -POJ3371模拟
Flesch Reading Ease Time Limit: 1000MS Memory Limit: 65536K Description Flesch Reading Ease, a reada ...
- EF之ExecuteSqlCommand更新出现无效的解决方案
本篇文章将会剖析为什么会出现这一现象.以及解决的办法 先来看一下代码 public static TResult AddTest() { TestDAL testdal = DALFactory.Cr ...
- 双层路由设置,WAN口和LAN口连接的方法设置
WAN口设置方法,社路由器分别为路1 和路2 1 路2的LAN口地址改为172.16.1.1,重启 2 笔记本改成172.16.1.X,然后进入设置,在里面WAN地址设置为静态地址 192.168.1 ...
- python之RabbitMQ
一.安装RabbitMQ 1. 安装erlang 1 2 3 4 tar xf otp_src_18.3.tar.gz cd otp_src_18.3 ./configure --prefix=/ma ...
- ABAP GET TIME
用来获得应用服务器的时间. 在程序开始运行的时候,sy-uzeit已经被写入内存,不用get time不会刷新 例如: 运行结果: FORM TSTSYS. DATA: i1 TYPE i VAL ...
- angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。
最开始使用angular的时候,总是觉得它的依赖注入方式非常神奇. 如果你跳槽的时候对新公司说,我曾经使用过angular,那他们肯定会问你angular的依赖注入原理是什么? 这篇博客其实是angu ...
- mac上eclipse用gdb调试(转)
mac上eclipse用gdb调试 With its new OS release, Apple has discontinued the use of GDB in OS X. Since 2005 ...
- C# 委托实例(跨窗体操作控件)
在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托. 效果描述:有两个窗体,FORM1(一个名为“打开form2”的button控件)和FORM2(一个名为“ ...
- 轻松解决U盘中病毒,文件变成.exe执行文件的问题
U盘中的文件都变成.exe可执行文件是怎么回事?告诉你,你的U盘中病毒了,那么如何清除呢?小编现在就告诉你几个简单方法,轻松就能搞定U盘中病毒问题. 方法1: (1)首先使用杀毒软件把U盘杀杀毒,除去 ...
- 使用jquery实现搜索框的位置变换
现在很多的网站都存在这样一个效果:当用户搜索信息后,滚动内容时,搜索框的位置会产生变化,会固定在某个位置,方便用户进行再次搜索.比如百度图片.为了提高系统用户体验,也想加入这个效果,经过小段时间摸索, ...