咨询区

  • 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 上传文件相关推荐

  1. asp上传文件到ftp服务器,ASP.NET 中使用 FTP 上传文件

    public static void Upload(string filePath) { FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(&q ...

  2. 如何在Linux中使用sFTP上传或下载文件与文件夹

    如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过 ...

  3. linux通过ftp自动上传文件到服务器,Linux系统通过FTP上传文件到云服务器

    如何通过FTP将文件上传到腾讯云Linux云服务器?上一篇小编给大家介绍了通过Winscp将文件上传到云服务器的方法,今天小编为大家介绍过FTP将文件上传到腾讯云Linux云服务器的方法,用户需要使用 ...

  4. java ftp 上传文件到服务器,java实现ftp上传文件到服务器

    java实现ftp上传文件到服务器 内容精选 换一换 怎样上传文件到Windows操作系统云服务器?安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ ...

  5. ssh怎么ftp上传文件到服务器,ssh ftp上传文件到服务器

    ssh ftp上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别 ...

  6. jsp向服务器上传文件,jsp ftp 上传文件到服务器

    jsp ftp 上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分 ...

  7. 上传文件到服务器的命令,ftp上传文件到服务器命令

    ftp上传文件到服务器命令 内容精选 换一换 本文介绍如何在 Linux 系统的本地机器上使用 FTP 服务,将文件从本地上传到云服务器中.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务 ...

  8. php实现ftp上传,PHP_PHP实现ftp上传文件示例,FTP上传是PHP实现的一个常见且 - phpStudy...

    PHP实现ftp上传文件示例 FTP上传是PHP实现的一个常见且非常重要的应用技巧,今天就来与大家分享一下PHP实现FTP上传文件的简单示例.希望对大家的PHP学习能带来一定的帮助. 主要代码如下: ...

  9. FTP上传文件提示550错误原因分析。

    今天测试FTP上传文件功能,同样的代码从自己的Demo移到正式的代码中,不能实现功能,并报 Stream rs = ftp.GetRequestStream()提示远程服务器返回错误: (550) 文 ...

最新文章

  1. 【组队学习】【29期】7. 集成学习(上)
  2. 图解 Attention(完整版)!
  3. 如何在Spring Boot中玩转智能合约【修订版】
  4. c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
  5. C#-Socket(TCP)
  6. 怎么判断前轮左右的位置_汽车上主要传感器的安装位置,你知道多少?
  7. html显示高亮c++
  8. 前端学习(3013):vue+element今日头条管理--手动触发验证
  9. docker 安装mysql_docker|docker安装mysql数据库
  10. Xcode 创建自定义模板
  11. 详解微信小程序开发(项目从零开始)
  12. springboot与dubbo整合
  13. html初识教学反思,五年级长方体的认识教学反思
  14. 【译】软件设计中的KISS原则
  15. Navicat Premium 15导入excel表格
  16. 【分享】女生教你怎么追MM--送给没有女朋友的来此灌水的GG们
  17. Ehcache二级缓配置永不过期,缓存失效问题 ---- 原因没有加载ehcache.xml配置文件,加载了默认的ehcache-failsafe.xml配置文件
  18. 多元回归函数regress的用法
  19. c++中CreateEvent函数
  20. Mybatis insert exception argument mismatch

热门文章

  1. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...
  2. 双绞线直连法如何才能使两台电脑实现共享
  3. spring cloud 总结
  4. C# 跨平台的支付类库ICanPay
  5. Linux中一些常用的很巧妙的命令
  6. Linux下下载JDK
  7. django源码简析——后台程序入口
  8. Zabbix3.0 安装Graphtree
  9. PHP开发学习-Apache+PHP+MySQL环境搭建
  10. Windbg在Managed App中设置函数断点的几种方法