C# FTP、SFTP文件上传

sftp和ftp的区别

SFTPFTP
连接方式sftp是在客户端和服务器之间通过SSH协议建立的安全连接来传输文件,默认端口:22ftp是通过tcp协议建立连接,默认端口:21
安全性加密不加密
效率

SFTP文件上传

需要引入SSH.NET包,这里遇到一个问题,就是上传的文件名中包含中文时,上传到ftp之后,文件名称会中文乱码

/// <summary>
/// 字符串存到FTP
/// </summary>
/// <param name="host">ftp地址</param>
/// <param name="port">端口</param>
/// <param name="username">账号</param>
/// <param name="password">密码</param>
/// <param name="remotePath">需要上传到ftp的路径,例如/E-data/1.txt</param>
/// <param name="fileContent">文件内容</param>
public static void SftpUploadByFileContent(string host,int port,string username,string password,string remotePath,string fileContent)
{
    using (var sftp = new SftpClient(host, port, username, password))
    {
        sftp.Connect();

        using (var stream = sftp.OpenWrite(remotePath))
        {
            using (var writer = new StreamWriter(stream))
            {
                writer.Write(fileContent);
            }
        }
        sftp.Disconnect();
    }
}

FTP文件上传,

使用WebRequest连接sftp时会报错503

/// <summary>
/// ftp上传文件
/// </summary>
/// <param name="url">ftp路径</param>
/// <param name="username">用户名</param>
/// <param name="password">密码</param>
/// <param name="fileName">需要上传的文件名(全路径)</param>
/// <returns>成功返回true,失败返回false</returns>
public static bool FileUpload(string url,string username,string password,string fileName)
{
    try
    {
        //ftp文件路径
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(username, password);
        // 读取文件到字节数组中
        byte[] data = File.ReadAllBytes(fileName); 
        // 创建一个上传数据的流
        Stream requestStream = request.GetRequestStream(); 
        // 将数据写入到流中
        requestStream.Write(data, 0, data.Length); 
        // 关闭流
        requestStream.Close(); 
        // 获取服务器的响应
        FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
        // 关闭响应
        response.Close(); 
        return true;
    }
    catch (Exception ex)
    {
        LogHelper.Write($"文件{fileName}上传失败:" + ex.Message);
        LogHelper.Write(ex.StackTrace);
        //FTP上传失败时删除本地备份文件
        File.Delete(fileName);
    }
    return false;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值