.NET C#连接FTP实现文件上传下载
2025-01-07
14
在 .NET 中可以使用 System.Net.FtpWebRequest 类来连接 FTP 服务器,实现文件上传和下载。以下是实现文件上传和下载的完整代码示例。
1. 上传文件到 FTP 服务器
using System;
using System.IO;
using System.Net;
class FtpUploader
{
public static void UploadFile(string ftpUrl, string filePath, string ftpUsername, string ftpPassword)
{
try
{
// 获取文件名
string fileName = Path.GetFileName(filePath);
// 拼接目标 FTP 地址
string uploadUrl = $"{ftpUrl}/{fileName}";
// 创建 FTP 请求
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uploadUrl);
request.Method = WebRequestMethods.Ftp.UploadFile;
// 设置登录凭据
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
// 读取本地文件
byte[] fileContents = File.ReadAllBytes(filePath);
// 设置上传文件的长度
request.ContentLength = fileContents.Length;
// 上传文件
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(fileContents, 0, fileContents.Length);
}
// 获取响应
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine($"上传完成: {response.StatusDescription}");
}
}
catch (Exception ex)
{
Console.WriteLine($"上传失败: {ex.Message}");
}
}
}
2. 从 FTP 服务器下载文件
class FtpDownloader
{
public static void DownloadFile(string ftpUrl, string fileName, string savePath, string ftpUsername, string ftpPassword)
{
try
{
// 拼接目标 FTP 地址
string downloadUrl = $"{ftpUrl}/{fileName}";
// 创建 FTP 请求
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(downloadUrl);
request.Method = WebRequestMethods.Ftp.DownloadFile;
// 设置登录凭据
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
// 获取响应
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
using (Stream responseStream = response.GetResponseStream())
using (FileStream fileStream = new FileStream(savePath, FileMode.Create))
{
responseStream.CopyTo(fileStream);
Console.WriteLine($"下载完成: {fileName} 保存到 {savePath}");
}
}
catch (Exception ex)
{
Console.WriteLine($"下载失败: {ex.Message}");
}
}
}
3. 示例调用
class Program
{
static void Main(string[] args)
{
string ftpUrl = "ftp://your-ftp-server.com";
string ftpUsername = "ftp-user";
string ftpPassword = "ftp-password";
// 文件上传
string fileToUpload = @"C:\path\to\your\file.txt";
FtpUploader.UploadFile(ftpUrl, fileToUpload, ftpUsername, ftpPassword);
// 文件下载
string fileNameToDownload = "file.txt";
string savePath = @"C:\path\to\save\file.txt";
FtpDownloader.DownloadFile(ftpUrl, fileNameToDownload, savePath, ftpUsername, ftpPassword);
}
}
4. 注意事项
FTP 地址格式:需要以 ftp:// 开头。如果使用非默认端口(21),请指定端口号,如:ftp://your-ftp-server.com:2121。
权限:确保 FTP 用户有读写权限。
被动模式:根据服务器设置,可能需要启用被动模式:
request.UsePassive = true; // 或 false
安全性:如果需要加密传输,建议使用 FTPS 或 SFTP。FtpWebRequest 不支持 SFTP,可以使用第三方库(如 SSH.NET)来实现。
5. 常见错误处理
530 Not logged in: 检查用户名、密码是否正确。 550 File not found: 检查文件路径或权限。 超时: 确保 FTP 服务器地址和网络连接正常。 更新于:2天前赞一波!
相关文章
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架
- C#使用 Attribute 实现 AOP 功能
- C#中的线程安全的集合ConcurrentQueue使用示例
- .NET C#中的Func、Predicate和Expression用法详解
- 5个高性能 .NET Core 图片处理库推荐
- ASP.NET如何将Views文件夹从项目分离
- C#13新特性 使用System.Threading.Lock简化线程同步
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
文章评论
评论问答