【发布时间】:2015-06-24 10:11:22
【问题描述】:
我需要将文件上传到我的 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;
【问题讨论】:
-
是 ftp 帐户指示它自己的“根”所在的位置。只是给个提示。
-
没有帐号。我只需将 ftp 地址粘贴到普通的 Windows 资源管理器文件夹中即可访问该文件夹。而且我可以在其中复制文件。在资源管理器中是可能的,应该可以在 c# 中自动化它
-
所有 FTP 访问都有一个与之配套的帐户。对于您提供的信息,请检查来宾用户的默认根。
-
默认用户为none,基本为空。请注意我说我可以通过任何 FTP 客户端软件访问文件夹而不使用凭据的部分。只是文件夹,如果我尝试使用主根目录,我还是会得到 550。
-
有了 FTP,一切都需要一个帐户。对于空白帐户,您将自动以访客用户身份登录,或者对于也映射到访客用户的 IIS 匿名帐户。如果您查看您的 FTP 服务器(内置或其他),则有 2 组默认 root .. 1 用于登录用户,1 用于匿名或访客。