前言:最近要实现从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. Caching POST-post是否能缓存

    https://www.mnot.net/blog/2012/09/24/caching_POST One of the changes in Apple’s release of iOS6 last ...

  2. Oracle 实现自增主键

    废话不多讲,直接上代码 //1.创建表 Create Table testZcm(       Id Number(2) Not Null Primary Key,       postCode Nu ...

  3. LeetCode 1100. Find K-Length Substrings With No Repeated Characters

    原题链接在这里:https://leetcode.com/problems/find-k-length-substrings-with-no-repeated-characters/ 题目: Give ...

  4. xshell && xftp 下载

    链接:https://pan.baidu.com/s/1aLdgOSshytIYhArkB7tghQ 提取码:fqjb

  5. html 选择本地图片,显示选择的图片

    主要用的是html5的文件系统部分: <html> <head> <meta name="viewport" content="width= ...

  6. mercurial branch name use integer as a name

    问题:mercurial branch name use integer as a name 解决: 到安装目录下找到mercurial/scmutil.py文件(我的:/usr/local/Cell ...

  7. oracle--CKPT

    一,CKPT功能 ) 调度数据写: ) 会将已经完成的检查点写到数据文件头: ) 把已经完成的检查点写到控制文件: . other:其他进程: . 注意:磁盘.内存支持并行I/O,磁带不支持: . 服 ...

  8. 运行虚拟机报错:CPU acceleration status: HAXM is not installed on this machine

    运行虚拟机报错:CPU acceleration status: HAXM is not installed on this machine. 这是因为SDKmanage没有安装HAXM ,于是打开S ...

  9. 灵活的MyBatis

    一.前言 将数据存储到数据库是开发中很重要的一环.曾经有程序员说自己做过最牛逼的事情就是增删改查.确实我们做了很多页面,后太代码写了很多,可是最终都离不开数据库的增删改查.Java有一套自己的JPA标 ...

  10. 阿里云ECS服务器相关配置以及操作---上(初学者)

    最近买了一台阿里云的ECS服务器 linux系统 centos镜像,把我相关的一些操作记录下来,供大家参考,不足之处欢迎指正. 首先买的过程就不用介绍了,根据自己的实际需要选择自己想要的配置,点击付钱 ...