前言:最近要实现从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. 开源项目(7)Opencv日常之Homography

    参考教程 https://blog.csdn.net/liuphahaha/article/details/50719275 什么是Homography 在图1中有两张书的平面图,两张图分别有四个相对 ...

  2. 进阶blog整理

    https://blog.csdn.net/zhangerqing https://bbs.csdn.net/topics/310072893 SCJP

  3. 13--网页,网站,微信公众号基础入门(PHP获取网页的get请求)

    https://www.cnblogs.com/yangfengwu/p/11148976.html 大家在访问网页的时候有没有注意一件事情 现在咱来看这种哈 现在咱做个功能哈,类似于这样 长话短说 ...

  4. 总结TCP与UDP的区别

    TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源. TCP的缺 ...

  5. 用户生命周期(User Lifetime)

    什么是用户生命周期? 用户生命周期是从用户开始接触产品到离开产品的整个过程.用户生命周期可分为:引入期.成长期.成熟期.休眠期.流失期.对应的是用户对产品不同的参与程度. 用户生命周期有什么用? 按照 ...

  6. create-react-app不支持less的解决方式

    进入node_modules\react-scripts\config目录 修改webpack.config.dev.js跟webpack.config.prod.js中关于loader的配置即可,注 ...

  7. 树形dp专题总结

    树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题( ...

  8. HustOJ二次开发之隐藏菜单栏

    通过关键搜索: find / -name *nav.php 出现如下结果:/home/judge/src/web/template/ie/nav.php/home/judge/src/web/temp ...

  9. el-select获取选中的value和label

    selectGetFn(val) { if (this.multipleFlag) { for (let i = 0; i < GUIDArr.length; i++) { let obj =  ...

  10. MyBatis(九):Mybatis Java API批量操作(增、删、改、查)

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...