在 C# 中使用 FTP 上传文件:无法确定 URI 的格式

1 c# ftpwebrequest

我正在尝试用 C# 中的 ftp 上传文件。目前,我尝试在本地进行:

static void Main(string[] args)
{
    UploadFileToFtp("C:\\Utilisateurs\\arnaud\\Bureau\\yhyhyyh.rtf","root","root");
}

public static void UploadFileToFtp(string filePath, string username, string password)
{
    var fileName = Path.GetFileName(filePath);
    var request = (FtpWebRequest)WebRequest.Create("127.0.0.1/" + fileName);<---ERROR

    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.Credentials = new NetworkCredential(username, password);
    request.UsePassive = true;
    request.UseBinary = true;
    request.KeepAlive = false;

    using (var fileStream = File.OpenRead(filePath))
    {
        using (var requestStream = request.GetRequestStream())
        {
            fileStream.CopyTo(requestStream);
            requestStream.Close();
        }
    }

    var response = (FtpWebResponse)request.GetResponse();
    Console.WriteLine("Upload done: {0}", response.StatusDescription);
    response.Close();
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:(见上文) 无法确定 URI 的格式

感谢您的帮助

小智 5

我认为您缺少协议:应该ftp://127.0.0.1/而不是127.0.0.1/. 此外,我建议您对存储在filePath. 铁:

var encoded = HttpUtility.UrlEncode(filePath);
var request = (FtpWebRequest)WebRequest.Create("ftp://127.0.0.1/" + encoded)
Run Code Online (Sandbox Code Playgroud)

您需要引用System.Web程序集才能使用UrlEncode。更多这里