前言:最近要实现从FTP服务器下载和上传文件,在网上搜了一下据说 FluentFTP 是个客户端FTP功能的实现,使用还比较顺畅,所以对此展开研究,无奈网上给出的案例并没有想象中的那么简洁,所以想着自己搞一个代码少易读性高的demo来给需要的小伙伴。话不多说直接上案例,文章结尾会有下载地址。

一、首先我们需要通过 NuGet 导入 FluentFTP 包。

二、编写上传和下载部分代码。

using FluentFTP;
using System;
using System.IO;
using System.Net; namespace FluentFTPDemo
{
class Program
{
static void Main(string[] args)
{
UploadFile("ftp://192.168.1.200/", "test", "test", "d:\\doctument\\test.pdf");
DownloadFile("ftp://192.168.1.200/", "test", "test", "d:\\doctument\\0bc600ee-b36a-4344-b82d-5e23b9de771c.pdf", "/Files/0bc600ee-b36a-4344-b82d-5e23b9de771c");
Console.ReadLine();
} /// <summary>
/// FTP服务器文件下载到本地
/// </summary>
/// <param name="ftphost">ftp地址:ftp://192.168.1.200/</param>
/// <param name="user">ftp用户名</param>
/// <param name="password">ftp密码</param>
/// <param name="saveLocalPath">下载到本地的地址:d:\\doctument\\0F5GAHRT4A484TRA5D15FEA.pdf</param>
/// <param name="downPath">将要下载的文件在FTP上的路径:/DownFile/0F5GAHRT4A484TRA5D15FEA</param>
static void DownloadFile(string ftphost, string user, string password, string saveLocalPath, string downPath)
{
using (FtpClient conn = new FtpClient())
{
conn.Host = ftphost;
conn.Credentials = new NetworkCredential(user, password); byte[] outBuffs;
bool flag = conn.Download(out outBuffs, downPath); string s = saveLocalPath.Substring(, saveLocalPath.LastIndexOf('\\'));
Directory.CreateDirectory(s);//如果文件夹不存在就创建它 FileStream fs = new FileStream(saveLocalPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Write(outBuffs, , outBuffs.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
}
} /// <summary>
/// 将文件上传到FTP服务器
/// </summary>
/// <param name="ftphost">ftp地址</param>
/// <param name="user">ftp用户名</param>
/// <param name="password">ftp密码</param>
/// <param name="localPath">本地文件所在的路径:"D:\doctument\test.pdf"</param>
static void UploadFile(string ftphost, string user, string password, string localPath)
{
try
{
using (FtpClient conn = new FtpClient())
{
conn.Host = ftphost;
conn.Credentials = new NetworkCredential(user, password);
using (FileStream fs = new FileStream(localPath, FileMode.Open))
{
string path = localPath.Substring(localPath.LastIndexOf('\\') + ); //取文件名
bool flag = conn.Upload(fs, path);
}
}
}
catch (Exception ex)
{ }
}
}
}

  链接: https://pan.baidu.com/s/17ACQrZI_90PjMBJ2rRhbwg

  提取码: i98j

C# FluentFTP类上传下载文件的更多相关文章

  1. SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...

  2. C#实现http协议支持上传下载文件的GET、POST请求

    C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...

  3. 向linux服务器上传下载文件方式收集

    向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...

  4. 【WCF】利用WCF实现上传下载文件服务

    引言     前段时间,用WCF做了一个小项目,其中涉及到文件的上传下载.出于复习巩固的目的,今天简单梳理了一下,整理出来,下面展示如何一步步实现一个上传下载的WCF服务. 服务端 1.首先新建一个名 ...

  5. java web service 上传下载文件

    1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...

  6. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  7. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

  8. shell通过ftp实现上传/下载文件

    直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...

  9. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

随机推荐

  1. 分享一个Centos8的国内yum源

    使用的是清华大学开源镜像站,文件地址: https://github.com/hackyoMa/docker-centos/blob/8/CentOS-Base.repo 使用方法: cd /etc/ ...

  2. vscode中配置C#环境

    安装.Net Core SDK 如果已经安装了SDK的话则可以跳过这一步,不然需要安装SDK在进行环境配置:下载链接.NET CORE SDK下载: SDK安装完之后,软件执行界面如下所示 在vsco ...

  3. hive基础知识二

    1. Hive的分区表 1.1 hive的分区表的概念 在文件系统上建立文件夹,把表的数据放在不同文件夹下面,加快查询速度. 1.2 hive分区表的构建 创建一个分区字段的分区表 hive> ...

  4. share memory between guest and nic

    通过硬件的IOMMU,内核提供的共享内存.VFIO可以实现. REF: 1. offical DPDK API Doc, 简书有翻译版 DPDK编程指南(翻译)(一)  (二十七) 2. dpdk v ...

  5. python 判断操作系统以及操作系统版本号

    >>> import platform >>> platform.platform() 'Darwin-17.7.0-x86_64-i386-64bit' > ...

  6. HTML引入外部JS文件

    <!--引入外部文件的方式--> <script type="text/javascript" src="attack.js">< ...

  7. IntelliJ IDEA 2019从入门到癫狂 图文教程!

    阅读本文大概需要 6 分钟. 作者:yizhiwazi 来源:www.jianshu.com/p/9c65b7613c30 前言:IntelliJ IDEA 如果说IntelliJ IDEA是一款现代 ...

  8. border-radius实例2

    一.border-radius 最大值100% /* border-radius的最大值是100% */ .block { width: 100px; height: 100px; border: 1 ...

  9. SEAndroid

    SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布文件子系统中的. 实际上,系统中需要保护的资源非常多,除了前面说的文件之外,还有进程. ...

  10. win101903版本vmware 14虚拟机插usb设备卡死

    win101903版本vmware 14虚拟机插usb设备卡死 问题的环境: win10,1903版本: vmware 14 版本: 安装的是ubuntu1604虚拟机: 当插入usb摄像头,并连接到 ...