艺萌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文件传输)(四)的更多相关文章

  1. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  2. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  3. Linux文件系统管理 开机自动挂载及fstab文件修复

    概述 开机自动挂载及fstab文件修复 开机自动挂载 实现开机后自动挂载,就需要修改系统的自动挂载文件 /etc/fstab.因为系统就是依赖这个文件决定启动时加载的文件系统的.通过vi 打开/etc ...

  4. [QuickX]xcode运行Quick-cocos2d-x项目时自动更新lua资源文件

    1.项目设置 build settings ->build options ->Scan all source files and Includes = YES 2.加入script (1 ...

  5. winform自动更新并实现文件的批量异步下载

    public partial class update : Form    {        private WebClient client;        int downfilenum = 0; ...

  6. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  7. Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

    首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion   ...

  8. Winform(C#.NET)自动更新组件的使用及部分功能实现

    声明:核心功能的实现是由园子里圣殿骑士大哥写的,本人是基于他核心代码,按照自己需求进行修改的.   而AutoUpdaterService.xml文件生成工具是基于评论#215楼 ptangbao的代 ...

  9. 我的Vim配置(自动补全/树形文件浏览)

    配置文件的下载路径在这里  http://files.cnblogs.com/files/oloroso/vim.configure.xz.gz 这实际上是一个 xz 格式的文件,添加的 gz 文件后 ...

随机推荐

  1. Topcoder SRM 683 Div2 B

    贪心的题,从左向右推过去即可 #include <vector> #include <list> #include <map> #include <set&g ...

  2. Javascript > Eclipse > Code completion (Content Assist)

    分享一下,整体理清的思路,关于Eclipse中代码的 自动完成,可配置自定义Library文件地址 其实这个思路的通用的,不管任何Eclipse支持的编辑语言,都可以适用.下面已Javascript来 ...

  3. Android 进程常驻----native保活5.0以下方案推演过程以及代码

    正文: 今天继续昨天,一鼓作气,争取这个礼拜全部写完. 上一篇文章留了一个别人的github链接,他里面的native保活实现方案也是大多数公司采用的方案. 我们先来讲一下他的方案. 他是首先开启一个 ...

  4. winform常用的属性(listview),常用容器(二者结合)

    ListVies控件主要用于展示数据(非常实用和重要的控件) FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) ___________________ ...

  5. VC++ 回调函数及使用方法(转)

    转载:http://blog.csdn.net/vsooda/article/details/7435801 转载:http://blog.csdn.net/lincyang/article/deta ...

  6. 中文 iOS/Mac 开发博客列表(转)

    转自https://github.com/tangqiaoboy/iOSBlogCN 中文 iOS/Mac 开发博客列表 本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息. 本博客列表 ...

  7. Xcode及obj-c的基础知识

    1, 从简单的例程来看基本语法: 下面的代码是通过OSX-Application-Command Line Tool生成的: #import <Foundation/Foundation.h&g ...

  8. JSON方式提交文档时SOLR报:AtomicUpdateDocumentMerger Unknown operation for the an atomic update, operation ignored

    文档是数组转成的json 原数组: array( 0 =>3, 1 =>3, 2 =>4, 3 =>5, 4 =>5, 5 =>6) 用array_unique去掉 ...

  9. Node聊天程序实例01

    作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. 本实例要实现 ...

  10. 基础笔记12(socket,url网络通信)

    进一步深入socket 1.网络通信条件: .IP地址,可用主机名. .传输数据时将不用的应用程序通过数字标识区分开来,这种标识称为逻辑端口,也称端口.(0-65535端口,一般系统预留0-1024) ...