在开发框架中使用FTP辅助类上传或者下载文件,方便管理附件内容

简介:

在有些系统应用里面,我们需要对应用服务器、数据库服务器、文件服务器进行分开,文件路径等信息存储在数据库服务器里面,但文件内容则存储在文件服务器里面,通过使用FTP进行文件的上传下载,从而实现更加高效的IO输出,也分担了服务器的压力。本篇随笔介绍使用公用类库里面的FTPHelper辅助类,实现文件的上传下载等基础操作。

1、FTPHelper辅助类的接口说明

首先我们为了方便辅助类的使用,使用了构造函数进行对象的参数初始化,如下所示。

我们整个FTPHelper辅助类,是使用FTP命令和FTP服务器进行交换,因此需要如果要获取文件或目录信息,那么就需要对这些信息进行转换为合适格式的内容,这里我们定义一个结构体用来承载这些信息。

这样我们可以顺利把FTP服务器的字符串返回(DOS格式或者Unix格式字符串)它们转换为对应的结构体,方便使用了。

 

整个辅助函数,提供了一些基础的函数来操作FTP文件或者目录,如下所示

        /// <summary>
        /// 仅获取文件列表
        /// </summary>
        /// <returns>获取的文件列表</returns>
        public List<FileStruct> ListFiles()
        
        /// <summary>
        /// 仅获取目录列表
        /// </summary>
        /// <returns>获取到的目录列表</returns>
        public List<FileStruct> ListDirectories()    

以及

        /// <summary>
        /// 关闭FTP服务器的所有连接
        /// </summary>
        public void Disconnect()

        /// <summary>
        /// 连接到FTP服务器
        /// </summary>
        /// <param name="server">FTP服务器的IP或者主机名</param>
        /// <param name="port">FTP服务器端口</param>
        /// <param name="user">登录用户名</param>
        /// <param name="pass">登录密码</param>
        public void Connect(string server, int port, string user, string pass)        
        
        /// <summary>
        /// 获取FTP的当前工作目录
        /// </summary>
        public string GetWorkingDirectory()        
        
        /// <summary>
        /// 在FTP服务器上改变目录
        /// </summary>
        public void ChangeDir(string path)        
        
        /// <summary>
        /// 在FTP服务器上创建新的目录
        /// </summary>
        public void MakeDir(string dir)        
        
        /// <summary>
        /// 在FTP服务器上移除目录
        /// </summary>
        public void RemoveDir(string dir)    
        
        /// <summary>
        /// 在FTP上移除一个文件
        /// </summary>
        public void RemoveFile(string filename)        
        
        /// <summary>
        /// 在FTP服务器上重命名一个文件
        /// </summary>
        /// <param name="oldfilename">旧文件名</param>
        /// <param name="newfilename">新文件名</param>
        public void RenameFile(string oldfilename, string newfilename)

        /// <summary>
        /// 打开一个存在的文件(支持续传)上传
        /// </summary>
        /// <param name="filename">本地上传的文件(包含文件路径)</param>
        /// <param name="remote_filename">存储在FTP上的文件名称</param>
        /// <param name="resume">如果存在,指定是否续传</param>
        public void OpenUpload(string filename, string remote_filename, bool resume)

        /// <summary>
        /// 打开下载一个文件
        /// </summary>
        /// <param name="remote_filename">FTP上的远端文件名</param>
        /// <param name="local_filename">另存为的文件名称(包含文件路径)</param>
        /// <param name="resume">如果存在,指定是否续传</param>
        public void OpenDownload(string remote_filename, string local_filename, bool resume)    
        
        /// <summary>
        /// 上传文件,循环操作直到文件全部上传完毕
        /// </summary>
        /// <returns>发送的字节数组大小</returns>
        public long DoUpload()
        
        /// <summary>
        /// 下载文件,循环操作直到文件全部下载完毕
        /// </summary>
        /// <returns>收到的字节数组大小</returns>
        public long DoDownload()
        

2、FTPHelper辅助类的使用

基于上述的接口,我们编写了一个使用Demo,主要用来介绍这个辅助类的各种接口使用。

获取到的测试结果输出如下所示

虽然我们在附件管理里面采用了更为通用的《附件管理模块》,统一上传文件到服务器上进行管理,并提供下载管理等内容,连接如下:

Winform开发框架之附件管理应用》。其他公用类库的使用说明,具体可以参考文章《公用类库使用帮助

不过我们开发的时候,为了方便,也可以使用 FTPHelper辅助类进行简单的文件上传下载操作。

本文转自博客园伍华聪的博客,原文链接:在开发框架中使用FTP辅助类上传或者下载文件,方便管理附件内容,如需转载请自行联系原博主。



目录
相关文章
|
4月前
|
安全 算法 网络协议
【Linux】文件服务FTP(File Transfer Protocol)
【Linux】文件服务FTP(File Transfer Protocol)
55 0
|
5月前
|
开发框架 Java 数据处理
多sheet页导出 + FTP上传文件实战
多sheet页导出 + FTP上传文件实战
|
5月前
|
网络协议 安全 Linux
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
小白带你学习文件共享服务器FTP和SAMBA的学习(二十二)
91 0
|
3天前
|
存储 Unix Linux
LabVIEW与实时目标之间的FTP文件
LabVIEW与实时目标之间的FTP文件
|
2月前
|
Shell Python Windows
通过Python实现win11环境下FTP的上传与下载
通过Python实现win11环境下FTP的上传与下载
|
2月前
|
监控 安全 测试技术
使用pyftpdlib组件实现FTP文件共享
使用pyftpdlib组件实现FTP文件共享
35 0
|
3月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
4月前
|
存储 数据处理
Dataphin集成任务支持自定义FTP标记完成文件内容(V3.14)
在文件传输的场景中,标记完成文件(有时也被称为标档文件)作为一种重要的确认机制被广泛应用。这一机制通过创建特定的“传输完成标识文件”,用于明确指示数据文件已成功完成全量传输,并达到可以进行下一步业务处理的状态,从而有效防止了基于不完整数据流的错误操作。
|
5月前
|
API 分布式数据库 数据安全/隐私保护
C/C++ 实现FTP文件上传下载
FTP(文件传输协议)是一种用于在网络上传输文件的标准协议。它属于因特网标准化的协议族之一,为文件的上传、下载和文件管理提供了一种标准化的方法,在Windows系统中操作FTP上传下载可以使用WinINet库,WinINet(Windows Internet)库是 Windows 操作系统中的一个网络 API 库,用于访问 Internet 上的资源。它提供了一组函数,使开发人员能够创建网络应用程序,例如通过 HTTP 协议下载文件,发送 HTTP 请求,处理 cookie 等,本章将通过使用WinInet所提供的接口实现FTP文件上传下载功能,使得用户可以通过代码的方式上传或下载文件与FTP
93 1
C/C++ 实现FTP文件上传下载
|
2月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。