You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#上传文件至FTP服务器调用GetRequestStream()报路径错误问题求助

问题排查及修复方案

核心错误原因

  • FTP目标路径格式错误:你构造的FTP地址用了多组连续的双正斜杠//,FTP标准路径只需要用单正斜杠分隔目录,连续斜杠会被服务器识别为非法路径
  • FTP目标文件名不匹配:本地要上传的文件名是ErrFileName+日期+.csv,但你拼接的FTP目标路径只加了ErrFileName.Trim(),没有拼接日期和.csv后缀,上传目标必须指定到完整文件名才合法
  • 未验证本地文件存在性:读取本地文件前没有判断文件是否存在,若本地文件生成失败也会触发路径类错误
  • 未确认FTP父目录存在:FtpWebRequest不会自动创建目标路径的上级目录,如果FTP服务器上对应的/xxxxxxxxxx/xxxxxxxx/目录不存在,直接上传会报路径错误

优化后可运行代码

// 构造本地文件名,用Path.Combine避免斜杠拼接错误
string CurFileName = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
    $"{ErrFileName.Trim()}{DateTime.Today.ToString("ddMMyyyy")}.csv");

// 先校验本地文件是否存在
if (!File.Exists(CurFileName))
{
    Console.WriteLine($"本地文件不存在:{CurFileName}");
    return;
}

// FTP路径用单斜杠分隔,目标文件名和本地保持一致
string ftpDir = "ftp://x.xxx.xxx.xxx/xxxxxxxxxx/xxxxxxxx/";
string Destination = $"{ftpDir}{Path.GetFileName(CurFileName)}";

try
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Destination);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.Credentials = new NetworkCredential("你的FTP账号", "你的FTP密码");
    request.Proxy = null;
    request.KeepAlive = true;
    request.UseBinary = true;

    // 直接读取文件字节,避免编码转换引发的文件损坏问题
    byte[] fileContents = File.ReadAllBytes(CurFileName);
    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}");
        File.Delete(CurFileName);
    }
}
catch (WebException e)
{
    if (e.Response is FtpWebResponse ftpResponse)
    {
        Console.WriteLine($"FTP错误:{ftpResponse.StatusDescription}");
    }
    Console.WriteLine($"异常详情:{e.Message}");
}

额外验证建议

  • 先把构造出来的Destination字符串打印出来,复制到浏览器地址栏访问,看能不能正常弹出FTP认证框,确认路径本身合法
  • 确认FTP账号对目标目录有写入权限

内容的提问来源于stack exchange,提问作者SSN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:54:03