如何在 C# 中使用 FTP 上传文件
咨询区
webvision:
我尝试用 C# 上传一个文件到 FTP-Server 上,文件已显示上传成功但显示 0Byte
,我的代码大概是这样的。
private void button2_Click(object sender, EventArgs e)
{var dirPath = @"C:/Documents and Settings/sander.GD/Bureaublad/test/";ftp ftpClient = new ftp("ftp://example.com/", "username", "password");string[] files = Directory.GetFiles(dirPath,"*.*");var uploadPath = "/httpdocs/album";foreach (string file in files){ftpClient.createDirectory("/test");ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file);}if (string.IsNullOrEmpty(txtnaam.Text)){MessageBox.Show("Gelieve uw naam in te geven !");}
}
回答区
cdev:
很简单,在 .NET5 中可以这么实现。
async Task<FtpStatusCode> FtpFileUploadAsync(string ftpUrl, string userName, string password, string filePath)
{FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);request.Method = WebRequestMethods.Ftp.UploadFile;request.Credentials = new NetworkCredential(userName, password);using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))using (Stream requestStream = request.GetRequestStream()){await fileStream.CopyToAsync(requestStream);}using (FtpWebResponse response = (FtpWebResponse)await request.GetResponseAsync()){return response.StatusCode;}
}
在 .NET Framework 中可以这么实现。
public void UploadFtpFile(string folderName, string fileName)
{FtpWebRequest request;string folderName; string fileName;string absoluteFileName = Path.GetFileName(fileName);request = WebRequest.Create(new Uri(string.Format(@"ftp://{0}/{1}/{2}", "127.0.0.1", folderName, absoluteFileName))) as FtpWebRequest;request.Method = WebRequestMethods.Ftp.UploadFile;request.UseBinary = 1;request.UsePassive = 1;request.KeepAlive = 1;request.Credentials = new NetworkCredential(user, pass);request.ConnectionGroupName = "group"; using (FileStream fs = File.OpenRead(fileName)){byte[] buffer = new byte[fs.Length];fs.Read(buffer, 0, buffer.Length);fs.Close();Stream requestStream = request.GetRequestStream();requestStream.Write(buffer, 0, buffer.Length);requestStream.Flush();requestStream.Close();}
}
然后像下面这样使用。
UploadFtpFile("testFolder", "E:\\filesToUpload\\test.img");
Saeb Amini:
对于文件上传,为啥要对底层的 WebRequest 进行封装造轮子呢?你完全可以使用 WebClient 实现 FTP 的文件上传,参考如下代码:
using (var client = new WebClient())
{client.Credentials = new NetworkCredential(ftpUsername, ftpPassword);client.UploadFile("ftp://host/path.zip", WebRequestMethods.Ftp.UploadFile, localFile);
}
点评区
居然用 WebClient
就能轻松的实现文件上传,Saeb Amini
大佬
如何在 C# 中使用 FTP 上传文件相关推荐
- asp上传文件到ftp服务器,ASP.NET 中使用 FTP 上传文件
public static void Upload(string filePath) { FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(&q ...
- 如何在Linux中使用sFTP上传或下载文件与文件夹
如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过 ...
- linux通过ftp自动上传文件到服务器,Linux系统通过FTP上传文件到云服务器
如何通过FTP将文件上传到腾讯云Linux云服务器?上一篇小编给大家介绍了通过Winscp将文件上传到云服务器的方法,今天小编为大家介绍过FTP将文件上传到腾讯云Linux云服务器的方法,用户需要使用 ...
- java ftp 上传文件到服务器,java实现ftp上传文件到服务器
java实现ftp上传文件到服务器 内容精选 换一换 怎样上传文件到Windows操作系统云服务器?安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ ...
- ssh怎么ftp上传文件到服务器,ssh ftp上传文件到服务器
ssh ftp上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别 ...
- jsp向服务器上传文件,jsp ftp 上传文件到服务器
jsp ftp 上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分 ...
- 上传文件到服务器的命令,ftp上传文件到服务器命令
ftp上传文件到服务器命令 内容精选 换一换 本文介绍如何在 Linux 系统的本地机器上使用 FTP 服务,将文件从本地上传到云服务器中.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务 ...
- php实现ftp上传,PHP_PHP实现ftp上传文件示例,FTP上传是PHP实现的一个常见且 - phpStudy...
PHP实现ftp上传文件示例 FTP上传是PHP实现的一个常见且非常重要的应用技巧,今天就来与大家分享一下PHP实现FTP上传文件的简单示例.希望对大家的PHP学习能带来一定的帮助. 主要代码如下: ...
- FTP上传文件提示550错误原因分析。
今天测试FTP上传文件功能,同样的代码从自己的Demo移到正式的代码中,不能实现功能,并报 Stream rs = ftp.GetRequestStream()提示远程服务器返回错误: (550) 文 ...
最新文章
- 【组队学习】【29期】7. 集成学习(上)
- 图解 Attention(完整版)!
- 如何在Spring Boot中玩转智能合约【修订版】
- c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
- C#-Socket(TCP)
- 怎么判断前轮左右的位置_汽车上主要传感器的安装位置,你知道多少?
- html显示高亮c++
- 前端学习(3013):vue+element今日头条管理--手动触发验证
- docker 安装mysql_docker|docker安装mysql数据库
- Xcode 创建自定义模板
- 详解微信小程序开发(项目从零开始)
- springboot与dubbo整合
- html初识教学反思,五年级长方体的认识教学反思
- 【译】软件设计中的KISS原则
- Navicat Premium 15导入excel表格
- 【分享】女生教你怎么追MM--送给没有女朋友的来此灌水的GG们
- Ehcache二级缓配置永不过期,缓存失效问题 ---- 原因没有加载ehcache.xml配置文件,加载了默认的ehcache-failsafe.xml配置文件
- 多元回归函数regress的用法
- c++中CreateEvent函数
- Mybatis insert exception argument mismatch
热门文章
- Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...
- 双绞线直连法如何才能使两台电脑实现共享
- spring cloud 总结
- C# 跨平台的支付类库ICanPay
- Linux中一些常用的很巧妙的命令
- Linux下下载JDK
- django源码简析——后台程序入口
- Zabbix3.0 安装Graphtree
- PHP开发学习-Apache+PHP+MySQL环境搭建
- Windbg在Managed App中设置函数断点的几种方法