C# FluentFTP类上传下载文件

  前言:最近要实现从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(0, saveLocalPath.LastIndexOf('\\'));Directory.CreateDirectory(s);//如果文件夹不存在就创建它 FileStream fs = new FileStream(saveLocalPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);fs.Write(outBuffs, 0, 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('\\') + 1); //取文件名bool flag = conn.Upload(fs, path);}}}catch (Exception ex){}}} }

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

  提取码: i98j

 

转载于:https://www.cnblogs.com/swjian/p/11142989.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python模块版本管理工具_【转】Python包管理工具

Python 包管理工具解惑本站文章除注明转载外&#xff0c;均为本站原创或者翻译。本站文章欢迎各种形式的转载&#xff0c;但请18岁以上的转载者注明文章出处&#xff0c;尊重我的劳动&#xff0c;也尊重你的智商&#xff1b;本站部分原创和翻译文章提供markdown格式源码&#x…

最小值c语言 循环,C语言循环结构 -C语言求全班同学身高的最大值和最小值

编写程序&#xff0c;帮桐桐找出全班同学身高的最大值和最小值。问题分析输入&#xff1a;班级总人数&#xff1b;依次输入班上每位同学的身高值(float型)。输出&#xff1a;最大身高值和最小身高值(float型)。这是一个依次比较大小的问题&#xff0c;具体步骤为&#xff1a;1)…

vim替换^m字符

替换^M字符在Linux下使用vi来查看一些在Windows下创建的文本文件&#xff0c;有时会发现在行尾有一些“^M”。有几种方法可以处理。 1.使用dos2unix命令。一般的分发版本中都带有这个小工具&#xff08;如果没有可以根据下面的连接去下载&#xff09;&#xff0c;使用起来很方便…

数据挖掘 python框架_8个最高效的Python爬虫框架

1.ScrapyScrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。2.PySpiderpyspider 是一个用python实现的功能强大…

病毒c语言代码大全,谁有C语言编写的病毒源代码?

一个c病毒源代码#include #include #include #include #include #pragma comment(lib,shlwapi.lib)#define TIMER 1//计时器//functionLRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程//获取盘符TCHAR FirstDriveFromMask (ULONG unitmask);//病毒从U盘启动时…

Android底层开发技术实战详解——内核、移植和驱动

《Android底层开发技术实战详解——内核、移植和驱动》基本信息作者&#xff1a; 王振丽 丛书名&#xff1a; Android移动开发技术丛书 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121175930上架时间&#xff1a;2012-8-13出版日期&#xff1a;2012 年8月开本&…

mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!

来源&#xff1a;cnblogs.com/songwenjie/p/9410009.html本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容&#xff0c;下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先&#xff0c;我们将从索引基础开…

c语言文件实现通信录程序,学C三个月了,学了文件,用C语言写了个通讯录程序...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include struct QQ //结构体&#xff0c;有6个成员{char name[20];char age[5];char tel[15];char qq[15];char birth[12];char address[80];}user;void style()//窗口风格函数{system("mode con…

《软件测试实战:微软技术专家经验总结》

《软件测试实战&#xff1a;微软技术专家经验总结》 基本信息 作者&#xff1a; 史亮 丛书名&#xff1a; 图灵原创 出版社&#xff1a;人民邮电出版社 ISBN&#xff1a;9787115345844 上架时间&#xff1a;2014-3-3 出版日期&#xff1a;2014 年2月 开本&#xff1a;16开 页…

websocket一直无法链接_.NET Core 实现基于Websocket的在线聊天室

什么是Websocket我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯&#xff0c;但是在web体系是用不了socket通讯技术的&#xff0c;因为http被设计成无状态&#xff0c;每次跟服务器通讯完成后就会断开连接。在没有websocket之前web系统如果要做双工通讯…

c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题

无忧考网为大家收集整理了《2014计算机二级考试C语言考前预测选择题》供大家参考&#xff0c;希望对大家有所帮助&#xff01;&#xff01;&#xff01;1.结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法A.对象B.数据结构C.数据流D.目标2.对线性表进行二分法检…

生成 cone(锥体)

简介 生成 圆锥 代码 // CreateCone.cpp: 定义控制台应用程序的入口点。 //#include <iostream> #include <OpenMesh/Core/IO/MeshIO.hh> #include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh> #include<cmath> #include "AddPolygon.h" …

使用函数统计指定c语言,浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数...

热门文章推荐以下50道算法编程题访问量较大&#xff0c;包含常用语法&#xff0c;数据结构&#xff0c;解题思路等等&#xff0c;作为C语言学习者必练题目推荐给各位。创作不易&#xff0c;记得一键三连哦&#xff01;&#xff01;&#xff01;习题5-5 使用函数统计指定数字的个…

半监督分类算法_基于同质区和迁移学习的高光谱图像半监督分类

作 者 信 息赵婵娟&#xff0c;周绍光&#xff0c;丁 倩&#xff0c;刘丽丽(河海大学 地球科学与工程学院&#xff0c;江苏 南京 211100)“【摘要】针对高光谱遥感图像分类中标记样本难获取的问题&#xff0c;提出了一种基于同质区和迁移学习的新型半监督分类方法。首先对高…

【题解】Luogu P4052[JSOI2007]文本生成器 AC自动机

AC自动机上DP f[i][j]表示节点j,串长为i 当一个串的尾节点被标红或其fail指针指向的被标红&#xff0c;都是可读的 用总的减去不可读的即为答案 #include<iostream> #include<cstring> #include<cstdio> #include<queue> #define MOD (10007) #define …

在SQL Server中使用命令调用SSIS包

在SQL Server中可以使用dtexec命令运行SSIS包&#xff08;2005以上版本&#xff09;,当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包。 具体操作步骤如下&#xff1a; 1.首先&#xff0c;当然是要在Business Intelligence中设计好包&#xff0c;并调试通过。 2.然后&…

c语言 结构体数组嵌套另一个结构体数组怎么初始化?,如何初始化结构体数组(内嵌结构体)...

Keil 结构体变量初始化tujidi1csd25142016-09-30一维数组结构体数组结构体数组&#xff0c;通过改变指针类型改变访问数组的方式toto129748850424332014-08-01mfc结构体指针、结构体数组指针u01399024812292014-12-14memset结构体初始化shagua_nan184092016-03-16【C -> 容器…

本特利3500_本特利技术控的自我修养之 轴位移探头安装

正在学习之-客户答疑国家疫情当前&#xff0c;除了保护好自己、不给国家添麻烦以外我们能做的实在有限。上学时因为种种原因没有按家里的期望学医&#xff0c;也没有能够考上最喜欢的生物专业(理想中希望去非洲做动物类研究工作-跟拍狮子)至今还是憾事&#xff0c;但是加入本特…

map标签的详细使用参数

map标签必须成对出现&#xff0c;即 <map> ....</map> 同时map必须和area配合使用。 img标签里的usermap属性值必须与map标签里的id和name值完全一致 area标签&#xff1a;定义图片的点击区域 area 是单标签&#xff0c;不成对。 属性&#xff1a; accesskey 快捷键…

快捷方式修复_Mac上的屏幕截图不起作用该如何修复?

屏幕截图是Mac提供的内置功能&#xff0c;很少有它不起作用。但是由于某些意外的设置或硬件问题&#xff0c;Mac上的屏幕截图有时无法正常工作&#xff0c;这里提供的是Mac上的屏幕截图不起作用该如何修复&#xff1f;1.在Mac上启用屏幕快照快捷方式如果您按CMD SHIFT 3或CMD…