我可以将一个文件从ftp服务器传输到本地目录。使用以下代码
using (WebClient ftpClient = new WebClient())
{
ftpClient.Credentials = new System.Net.NetworkCredential("username", "password");
ftpClient.DownloadFile("ftp://website.com/abcd.docx", @"D:\\WestHam\test.docx");
但我不知道如何传输多个文件。有人能帮我这个忙吗。}
发布于 2013-12-12 03:31:37
使用以下代码,只需替换用户凭据:
static void Main(string[] args)
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://mywebsite.com/");
ftpRequest.Credentials = new NetworkCredential("user345", "pass234");
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
List<string> directories = new List<string>();
string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = streamReader.ReadLine();
}
streamReader.Close();
using (WebClient ftpClient = new WebClient())
{
ftpClient.Credentials = new System.Net.NetworkCredential("user345", "pass234");
for (int i = 0; i <= directories.Count-1; i++)
{
if (directories[i].Contains("."))
{
string path = "ftp://mywebsite.com/" + directories[i].ToString();
string trnsfrpth = @"D:\\Test\" + directories[i].ToString();
ftpClient.DownloadFile(path, trnsfrpth);
}
}
}
发布于 2018-10-25 03:49:12
非常强大和简单的库FluentFTP
看看这个;
我的配置文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="FtpHost" value="127.0.0.1"/> <add key="FtpUser" value="username"/> <add key="FtpPassword" value="password123"/> <add key="FtpDirectory" value="/INTERESTING FILES/DATA"/> <add key="FileExtension" value=".txt"/> <add key="DownloadTo" value="C:\Downloads"/> <add key="DeleteFilesAfterDownload" value="false"/> </appSettings> </configuration>
和一个小FTP库:
namespace FTPDownloadAdapter {
class Program
{
private static readonly string FtpHost = ConfigurationManager.AppSettings["FtpHost"];
private static readonly string FtpUser = ConfigurationManager.AppSettings["FtpUser"];
private static readonly string FtpPassword = ConfigurationManager.AppSettings["FtpPassword"];
private static readonly string FtpDirectory = ConfigurationManager.AppSettings["FtpDirectory"];
private static readonly string FileExtension = ConfigurationManager.AppSettings["FileExtension"];
private static readonly string DownloadTo = ConfigurationManager.AppSettings["DownloadTo"];
private static readonly string DeleteFilesAfterDownload = ConfigurationManager.AppSettings["DeleteFilesAfterDownload"];
static void Main(string[] args)
{
try{
DownloadFiles();
}
catch (Exception er){
Console.WriteLine(er.ToString());
}
}
private static void DownloadFiles(){
// create an FTP client
var client = new FtpClient(FtpHost) { Credentials = new NetworkCredential(FtpUser, FtpPassword) };
// if you don't specify login credentials, we use the "anonymous" user account
// begin connecting to the server
client.Connect();
Console.WriteLine($"Retrieving files with extension [{FileExtension}] from directory [{FtpDirectory}]");
foreach (FtpListItem item in client.GetListing(FtpDirectory)){
// if this is a file
if (item.Type == FtpFileSystemObjectType.File && (Path.GetExtension(item.FullName) == FileExtension)){
// get the file size
long size = client.GetFileSize(item.FullName);
// get modified date/time of the file or folder
DateTime time = client.GetModifiedTime(item.FullName);
// calculate a hash for the file on the server side (default algorithm)
FtpHash hash = client.GetHash(item.FullName);
// download the file
var fileName = Path.GetFileName(item.FullName);
var saveFilePath = Path.Combine(DownloadTo, fileName ?? throw new InvalidOperationException("File Appears to not have a name"));
Console.WriteLine($"Downloading file: {fileName}");
client.DownloadFile(localPath: saveFilePath, remotePath: item.FullName);
if (DeleteFilesAfterDownload == "true")
{
Console.WriteLine($"DeleteFilesAfterDownload is true, Deleting file from FTP : {item.FullName}");
client.DeleteFile(item.FullName);
Console.WriteLine("File deletion success");
}
else
{
Console.WriteLine($"DeleteFilesAfterDownload not true, skip deleting : {item.FullName}");
}
}
}
}
}
}
https://stackoverflow.com/questions/20526536
复制相似问题