ejemplo - ftp c#
Descargue el Ășltimo archivo de un servidor FTP (1)
Debe recuperar las marcas de tiempo de los archivos remotos para seleccionar la última.
modificación de la marca de tiempo de todos los archivos en un directorio utilizando las características ofrecidas por .NET framework, ya que no es compatible con FTP MLSD
. El comando MLSD
proporciona una lista de directorios remotos en un formato estandarizado legible por máquina. El comando y el formato está estandarizado por RFC 3659 .
Alternativas que puede usar, que son compatibles con .NET Framework:
Método
ListDirectoryDetails
(el comando FTPLIST
) para recuperar detalles de todos los archivos en un directorio y luego tratar con el formato específico del servidor FTP de los detallesFormato DOS / Windows: clase C # para analizar WebRequestMethods.Ftp.ListDirectoryDetails Respuesta FTP
* formato nix: análisis de la línea FtpWebRequest ListDirectoryDetailsMétodo
GetDateTimestamp
(el comando FTPMDTM
) para recuperar individualmente marcas de tiempo para cada archivo. Una ventaja es que la respuesta está estandarizada por RFC 3659 aYYYYMMDDHHMMSS[.sss]
. Una desventaja es que debe enviar una solicitud por separado para cada archivo, lo que puede ser bastante ineficiente. Este método usa la propiedadLastModified
que mencionas:const string uri = "ftp://example.com/remote/path/file.txt"; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri); request.Method = WebRequestMethods.Ftp.GetDateTimestamp; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Console.WriteLine("{0} {1}", uri, response.LastModified);
Alternativamente, puede utilizar una implementación de cliente FTP de un tercero que sea compatible con el moderno comando MLSD
.
Por ejemplo, el ensamblado WinSCP .NET lo admite.
Incluso hay un ejemplo para su tarea específica: descargar el archivo más reciente .
El ejemplo es para PowerShell y SFTP, pero se traduce a C # y FTP fácilmente:
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "example.com",
UserName = "username",
Password = "password",
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Get list of files in the directory
string remotePath = "/remote/path/";
RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);
// Select the most recent file
RemoteFileInfo latest =
directoryInfo.Files
.OrderByDescending(file => file.LastWriteTime)
.First();
// Download the selected file
localPath = @"C:/local/path/";
session.GetFiles(session.EscapeFileMask(remotePath + latest.Name), localPath).Check();
}
(Soy el autor de WinSCP)
Tengo que descargar el último archivo de un servidor FTP. Sé cómo descargar el último archivo de mi computadora, pero no sé cómo descargarlo desde un servidor FTP.
¿Cómo puedo descargar el último archivo de un servidor FTP?
Este es mi programa para descargar el último archivo de mi computadora
public Form1()
{
InitializeComponent();
string startFolder = @"C:/Users/user3/Desktop/Documentos XML";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
IEnumerable<System.IO.FileInfo> fileQuerry =
from file in fileList
where file.Extension == ".txt"
orderby file.CreationTimeUtc
select file;
foreach (System.IO.FileInfo fi in fileQuerry)
{
var newestFile =
(from file in fileQuerry
orderby file.CreationTimeUtc
select new { file.FullName, file.Name })
.First();
textBox2.Text = newestFile.FullName;
}
}
OK, con este código sé la fecha del último archivo, pero ¿Cómo sé el nombre de este archivo ????????