C#FTP绕过ROOT连接到特定的PATH

本文关键字:PATH 绕过 ROOT 连接 C#FTP | 更新日期: 2023-09-27 17:59:17

我需要将文件上传到ftp服务器中的特定文件夹。问题是访问ftp的权限仅限于一个特定文件夹,而该文件夹不是根文件夹。

发送此请求会导致错误550

看起来我的ftp请求转到了根目录,然后更改到了目录。我需要将请求发送到特定路径。例如,如果使用mozilla,我可以很好地做到这一点,而不会收到错误。

(如果我仅首先连接到根路径,则我接收550)

有什么想法吗?

 Uri target = new Uri("ftp://mtftpserver/folder");
    try
    {

        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(target);        
        ftpRequest.UseBinary = true;
        ftpRequest.UsePassive = true;
        ftpRequest.KeepAlive = true;
        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;        
        ftpStream = ftpRequest.GetRequestStream();
        FileStream localFileStream = new FileStream(localFile, FileMode.Create);
        byte[] byteBuffer = new byte[bufferSize];
        int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
        try
        {
            while (bytesSent != 0)
            {
                ftpStream.Write(byteBuffer, 0, bytesSent);
                bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
            }
        }
        catch (Exception ex) { Console.WriteLine(ex.ToString()); }
        localFileStream.Close(); 
        ftpStream.Close();
        ftpRequest = null;
    }

    catch (Exception ex) { Console.WriteLine(ex.ToString()); }
    return;

C#FTP绕过ROOT连接到特定的PATH

FTP错误代码错误550是"由于访问级别,文件不可用"

如果您在没有任何凭据或帐户的情况下连接到FTP服务器,则会自动以匿名用户或访客用户身份登录。

访客用户有一个与登录用户的根文件夹分离的预定义根。通常,访客、匿名用户有一个有限的文件夹可以处理

您正试图移动到默认用户没有访问权限的另一个文件夹,这是引发无效访问错误或错误550的文件夹。