我必须从FTP服务器下载最新文件。我知道如何从我的计算机下载最新文件,但我不知道如何从FTP服务器下载。
如何从FTP服务器下载最新文件?
这是我从电脑上下载最新文件的程序
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;
}
好的,使用此代码我知道最后一个文件的日期,但我如何知道这个文件的名称?????????
您必须检索远程文件的时间戳才能选择最新的时间戳。
不幸的是,由于.NET framework不支持FTP MLSD命令,因此没有真正可靠有效的方法使用.NET framework提供的功能检索目录中所有文件的修改时间戳。MLSD命令以标准的机器可读格式提供远程目录列表。命令和格式由RFC 3659标准化。
NET framework支持的备选方案:
>
DOS/Windows格式:C#类解析WebRequest方法。ftp。ListDirectory详情FTP响应
*nix格式:解析FtpWebRequest ListDirectory详情行
GetDateTimestamp
方法(FTPMDTM
命令)单独检索每个文件的时间戳。一个优点是响应由RFC 3659标准化为YYYYMMDDHMMSS[. sss]
。缺点是您必须为每个文件发送单独的请求,这可能效率很低。此方法使用您提到的LastModify
属性:
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);
或者,您可以使用支持现代MLSD命令的第三方FTP客户端实现。
例如,WinSCP.NET程序集支持这一点。
对于您的特定任务,甚至还有一个示例:下载最新的文件<示例适用于PowerShell和SFTP,但很容易转换为C#和FTP:
// 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
string localPath = @"C:\local\path";
session.GetFileToDirectory(latest.FullName, localPath);
}
(我是WinSCP的作者)
我正试图下载一些公共数据文件。我通过screensrap获取指向文件的链接,这些文件看起来都是这样的: 我在Requests library网站上找不到任何文档。
问题内容: 我每天都有大量的CSV文件要从Yahoo Finance下载。我希望我的应用程序读取文件的创建日期(在我的计算机上,而不是服务器上)。如果创建日期早于今天,则应下载新文件(因为它将具有新数据)。如果不是,则不应该下载新文件,并且相关计算器(本质上就是我的应用程序)应该将上次下载的文件用于特定的股票代码。 我进行了一些谷歌搜索,并找到了Apache POI项目。 这是最好的方法吗?有没有
本文向大家介绍C#开发windows服务实现自动从FTP服务器下载文件,包括了C#开发windows服务实现自动从FTP服务器下载文件的使用技巧和注意事项,需要的朋友参考一下 最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的文件是否发生改变,如果改变就执行相应的操作,然后用timer来设置隔多长时间来下载。
问题内容: 我想编写连接到我的大学SFTP服务器的脚本,并通过练习下载最新文件。到目前为止,我已经从Paramiko示例中更改了一些代码,但是我不知道如何下载最新文件。 这是我的代码: 问题答案: 使用而不是来获得具有属性(包括文件时间戳记)的列表。 然后,找到具有最大属性的文件条目。 代码如下:
问题内容: 我有一个URL,用于保存我的工作中的一些项目,它们大部分是MDB文件,但也有一些JPG和PDF。 我需要做的是列出该目录中的每个文件(已完成)并为用户提供下载它的选项。 使用PHP如何实现? 问题答案: 要读取目录内容,可以使用readdir()并使用脚本(在我的示例中)来下载文件 在其中,您可以强制浏览器发送下载数据,并使用basename()来确保客户端不会传递其他文件名,例如
我正在使用.NET 4 C。我正在尝试上载一个ZIP文件,然后将其下载到(我的)服务器。 上传我有 这似乎可行,因为我在服务器上得到了一个大小合适的文件。 1) 我如何将其流式传输,而不是首先将其加载到内存中?我将上传非常大的文件。 为了下载我有 2)一切似乎都正常......除了当我尝试解压缩下载的ZIP文件时,我得到了一个无效的ZIP文件。