首页 > 代码库 > 艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(三)

艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(三)

艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(三)

技术分享

 地址:https://item.taobao.com/item.htm?spm=686.1000925.0.0.AjdBGP&id=537538462790 

演示程序下载地址:http://pan.baidu.com/s/1geVfmcr

文件上传的思路

1、服务器端

     服务器端配置文件中,会指定一个目录,客户端上传的所有文件都保存在此目录中。

     技术分享

    但是客户端传来的文件,并不是直接保存在此目录中,而是现在此目录中创建一个子文件夹,然后保存在子文件夹中。

    那么服务器端接收文件,需要知道子文件夹的名称,这个名称是客户端上传文件时,相关参数中包含的。

    以本程序为例,服务器端指定了保存文件的目录是D盘。那么所有的上传的文件都会保存在D盘中。

 

   客户端 

   

      客户端上传文件A.rar  并告诉服务器端A.rar保存在  20161201这个文件夹中。

      服务器端会在D盘创建一个20161201为名称的子文件夹,然后把 A.rar保存在此文件夹中。

 

    客户端的代码会大致如此:

   

  //获取要上传的文件的本地地址
            string filePath = GetFileToOpen("上传文件"); 
            //新建一个文件ID
            string fileID = FileIDCreator.GetNextFileID(NetworkCommsDotNet.NetworkComms.NetworkIdentifier.ToString()); 
            //定义文件在服务器的保存位置(相对目录)
            string destFilePath = “20161201”+ @"\" + Path.GetFileName(filePath);
            //把文件添加到文件发送管理器中
            sendFileDict.AddSendFile(fileID, filePath, destFilePath,AppOutter.TcpConn);

 

服务器端收到消息后,根据destFilePath中的值,创建相应的子目录,并保存文件。

 

   QQ:286275658

 

这种形式有什么优点呢

在我的公文系统中,使用这种方式,数据库表的字段中只记录这个子文件夹的名即可.

当然,子文件夹中是可以包含多个文件的。比如某次公文中,可以包含多个附件。

 

客户端,可以根据某个公文的子文件夹名,获取此文件夹中所有文件。

     

艺萌TCP文件传输及自动更新系统介绍(TCP文件传输)(三)