【发布时间】:2020-01-13 16:40:29
【问题描述】:
我想在 ftp 服务器上下载文件夹的内容。 使用这个 Powershell 脚本我做到了:
#FTP Server Information - SET VARIABLES
$ftp = "ftp://my.server.ftp"
$user = 'ftp_user'
$pass = 'password'
$folder = '\folder\folder1\'
$target = "C:\temp\"
#SET CREDENTIALS
$credentials = new-object System.Net.NetworkCredential($user, $pass)
function Get-FtpDir ($url,$credentials) {
$request = [Net.WebRequest]::Create($url)
$request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
if ($credentials) { $request.Credentials = $credentials }
$response = $request.GetResponse()
$reader = New-Object IO.StreamReader $response.GetResponseStream()
$reader.ReadToEnd()
$reader.Close()
$response.Close()
}
#SET FOLDER PATH
$folderPath= $ftp + "/" + $folder + "/"
$Allfiles=Get-FTPDir -url $folderPath -credentials $credentials
$files = ($Allfiles -split "`r`n")
$files
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
$counter = 0
foreach ($file in ($files | where {$_ -like "*.*"})){
$source=$folderPath + $file
$destination = $target + $file
$webclient.DownloadFile($source, $target+$file)
#PRINT FILE NAME AND COUNTER
$counter++
$counter
$source
}
}
但现在我正在尝试将这个 powershell 脚本插入到 C# 应用程序中。 我已经走到这一步了:
static void Main(string[] args)
{
string ftp = "ftp://my.server.ftp";
string user = "ftp_user";
string pass = "password";
string folder = "\\folder\\folder1\\";
string target = "C:\\temp\\";
NetworkCredential credentials = new NetworkCredential(user, pass);
string folderPath = ftp + "/" + folder + "/";
var AllFiles = GetDir(folderPath, credentials);
??? $files = ($Allfiles -split "`r`n") ???
}
public static Object GetDir(string url, NetworkCredential credentials)
{
WebRequest request = WebRequest.Create(url);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = credentials;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
reader.ReadToEnd();
reader.Close();
response.Close();
}
在 powershell 脚本中的“Get-FtpDir”函数我不知道它返回什么对象,因此我不知道如何翻译这两个语句:
$Allfiles=Get-FTPDir -url $folderPath -credentials $credentials
$files = ($Allfiles -split "`r`n")
有人可以帮我吗?
提前致谢
【问题讨论】:
-
ListDirectory 返回类似于 unix/linux 上的 LS 的文本数据。
标签: c# powershell ftp