在附件管理模块中增加对FTP上传和预览支持的方法是什么

  介绍

这篇文章给大家分享的是有关在附件管理模块中增加对FTP上传和预览支持的方法是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

1, FTP上传,HTTP文件预览实现思路

我们设想的附件管理,底层都是需要在Winform上,网络等开发项目上重用的,因此底层的设计需要考虑好对应的处理,另外后面可以利用Winform的HTML编辑控件,或者Web的HTML编辑控件进行集成,附件则是统一在一个组件里面实现的。

借助FTP的文件上传,我们单机版本或者基于局域网的Winform界面程序,也可以单独构建一个FTP服务器,实现文件的共享;而分布式的混合式开发框架中,对于文件的上传,可以选择基于服务的文件系统写入,同时也可以基于FTP的方式上传。

基于混合式框架的FTP方式上传文件,其逻辑关系如下所示。

在附件管理模块中增加对FTP上传和预览支持的方法是什么

这样文件通过FTP方式上传的文件系统后,我们在文件系统里面搭建一个HTTP服务,这样对应上的HTTP地址就可以实现文件的下载,以及图片的查看等操作了(可以在HTML编辑器中实现)。

2,引入FTP组件实现文件上传

使用FTP上传,虽然在自己的公用类库里面有FTPHelper类可以使用,不过相对来说,我更愿意引入更为完善强大的FTP开源组件进行相关的处理,这里我们使用FluentFTP这个组件(GitHub地址:),这个是一个应用很广,功能很强大的FTP组件。

FluentFTP是一款老外开发的基于。净的支持FTP及的FTP的FTP类库,FluentFTP是完全托管的FTP客户端,被设计为易于使用和易于扩展。它支持文件和目录列表,上传和下载文件和SSL/TLS连接。它可以连接到Unix和Windows IIS建立FTP服务器。这个项目是完全开发托管c#。

这个组件的使用代码,这里粘贴一下,以便总体有一个直观的了解吧。

//创建FTP clientFtpClient客户机=new FtpClient (“123.123.123.123");//如果你不要# 39;t指定登录凭证,我们使用“anonymous"用户accountclient。凭证=new NetworkCredential (“david",“pass123");//开始连接到serverclient.Connect();//获取的文件和目录列表“/htdocs"folderforeach (FtpListItem项client.GetListing (“/htdocs")){//如果这是fileif(项目。类型==FtpFileSystemObjectType.File){//获取文件sizelong大?client.GetFileSize (item.FullName);      }//文件的修改日期/时间或folderDateTime时间=client.GetModifiedTime (item.FullName);//计算散列文件>///& lt; summary>///FTP配置信息///& lt;/summary>(DataContract)   FTPInfo(序列化)公共类   {///& lt; summary>///默认构造函数///& lt;/summary>公共FTPInfo ()   {      }///& lt; summary>///参数化构造函数///& lt;/summary>///& lt;参数name=皊erver"祝辞& lt;/param>///& lt;参数name=皍ser"祝辞& lt;/param>///& lt;参数name=皃assword"祝辞& lt;/param>公共FTPInfo(服务器的字符串,字符串的用户,密码字符串,字符串baseUrl)   {这个。服务器=服务器;这一点。用户=用户;这一点。密码=密码;这一点。BaseUrl=BaseUrl;   }///& lt; summary>///FTP服务地址///& lt;/summary>(数据成员)公共字符串服务器{得到;设置;}///& lt; summary>///FTP用户名///& lt;/summary>(数据成员)公共字符串用户{得到;设置;}///& lt; summary>///FTP密码///& lt;/summary>(数据成员)公共字符串密码{得到;设置;}///& lt; summary>///FTP的基础路径,如可以指定为IIS的路径::8000年,方便下载打开///& lt;/summary>(数据成员)公共字符串BaseUrl{得到;设置;}   }

定义一个函数,专门用来提取配置文件里面的相关FTP参数的,如下所示。

///& lt; summary>///获取配置的FTP配置参数///& lt;/summary>///& lt; returns> & lt;/returns>私人FTPInfo GetFTPConfig ()   {var ftp_server=config.AppConfigGet (“ftp_server"); var ftp_user=config.AppConfigGet (“ftp_user"); var ftp_pass=config.AppConfigGet (“ftp_password"); var ftp_baseurl=config.AppConfigGet (“ftp_baseurl");返回新FTPInfo (ftp_server, ftp_user, ftp_pass ftp_baseurl);   }

其中我们的配置文件如下所示。

在附件管理模块中增加对FTP上传和预览支持的方法是什么

使用FluentFTP的组件代码如下所示。

//使用FluentFTP操作FTP文件FtpClient客户=new FtpClient (ftpInfo。服务器,ftpInfo。用户,ftpInfo.Password);

然后调用FTP组件对目录进行判断,无则创建一个即可。

在附件管理模块中增加对FTP上传和预览支持的方法是什么