如果你缺乏在ftp上创建子目录的权限,你们会怎么做? 显然你无法在一个命令中创建一个目录
所以这个:
path = "ftp://someftp.com/files/newFolder/innerFolder";
var request = (FtpWebRequest)WebRequest.Create(path);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
var response = (FtpWebResponse)request.GetResponse());
如果'files'或'newFolder'已经存在,将抛出错误代码为550的异常
如何检查我是否有权创建子目录?
如果我没有这些权利,我该怎么办?请告诉我,您可以使用多个命令创建文件夹结构。
答案 0 :(得分:2)
好吧:因为FtpWebRequest
是无状态的 - 没有办法在FTP上更改当前目录。幸运的是,我们可以使用其中一个开源FTP库。这是AlexPilotti的FTPS库的一个例子,它可以通过NuGet
using (var client = new FTPSClient())
{
var address = Regex.Match(path, @"^(ftp://)?(\w*|.?)*/").Value.Replace("ftp://", "").Replace("/", "");
var dirs = Regex.Split(path.Replace(address, "").Replace("ftp://", ""), "/").Where(x => x.Length > 0);
client.Connect(address, credential, ESSLSupportMode.ClearText);
foreach (var dir in dirs)
{
try
{
client.MakeDir(dir);
}
catch (FTPException)
{
}
client.SetCurrentDirectory(dir);
}
}
}
答案 1 :(得分:1)
你是对的。您无法在一个命令中为FTP创建整个路径。最简单的方法可能如下:
基本上,它变为递归,有两个限制条件,非路径异常发生,没有任何东西需要修剪。