艺萌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 文件后 ...
随机推荐
- JAVA基础知识之Annotation
基本Annotation Annotation必须使用工具(APT, Annotation tool)才能处理,Annotation可以在编译,类加载,运行时被读取,并执行相应处理. 下面介绍一些常用 ...
- Bootstrap 模态框(Modal)插件
原文链接:http://www.runoob.com/bootstrap/bootstrap-modal-plugin.html Bootstrap 模态框(Modal)插件 模态框(Modal)是覆 ...
- 体验阿里云SSD云盘+ECS(I/O优化)的性能
阿里云推出SSD云盘+I/O优化的ECS已有一段时间,这个功能优化可以为ECS服务器与SSD云盘提供更好的网络能力.据阿里云官网介绍,SSD云盘最高提供20000次随机读写IOPS.256MB/S吞吐 ...
- video 播放
视频播放是个坑... HTML5 Video API : https://www.w3.org/2010/05/video/mediaevents.html 虽然界面很丑,但是事件.属性很全. 进行视 ...
- jQuery选择器方式-用的不多的name选择器
id:$("#id") name:$("[name='name']") class:$(".class") element:$(" ...
- Git命令行下解决冲突
使用Git时,在pull.merge.rebase的过程中,经常会遇到conflict的情况. 遇到conflict时,以上处理过程会终端,并且命令行中显示(xxx|MERGING)的状态(Windo ...
- 使用PHP的正则抓取页面中的网址
最近有一个任务,从页面中抓取页面中所有的链接,当然使用PHP正则表达式是最方便的办法.要写出正则表达式,就要先总结出模式,那么页面中的链接会有几种形式呢? 链接也就是超级链接,是从一个元素(文字. ...
- Linux系统下配置Tomcat
1.将下载好的tomcat文件拷贝至/usr/java文件夹中: cp apache-tomcat-7.0.72.tar.gz /usr/java 2.进入/usr/java文件夹: cd /usr/ ...
- mysql基本命令整理
1.replace into(insert into 的增强版) replace into tbl_name(col_name, ...) values(...)replace into tbl_na ...
- JAVA 1.7 流程控制语句 续
1. Java中的循环控制语句一共有3种,分别是while,do… while以及for循环.2. while循环,形式为:while(布尔表达式){//待执行的代码}3. do…while循环,新式 ...