检查FTP上是否存在文件 – 不知道文件的名称

我在FTP服务器上收到一个文件,该文件的名称是动态生成的。 我正在尝试编写一个程序来检查服务器上是否存在任何文件。

string userName = Dts.Variables["User::SFTPUsername"].Value.ToString(); string password = Dts.Variables["User::SFTPPassword"].Value.ToString(); **string fileName = Dts.Variables["User::FilePattern"].Value.ToString();** string ftpURL = String.Format("ftp://11.11.11/upload/{0}", fileName); WebClient request = new WebClient(); request.Credentials = new NetworkCredential(userName, password); FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpURL); ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize; ftpRequest.Credentials = new NetworkCredential(userName, password); using (FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse()) { byte[] newFileData = request.DownloadData(ftpURL.ToString()); string fileString = System.Text.Encoding.UTF8.GetString(newFileData); string strexist = String.Format("exist"); MessageBox.Show(strexist); Dts.Variables["User::FileExists"].Value = true; } 

这仅在我指定“fileName”时才有效。 无论如何我可以进行通配符搜索(“* .txt”)或搜索任何文件是否在上传文件夹中?

任何帮助赞赏!!

您可以从FTP列出文件名。 像下面……

  FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpURL); request.Method = WebRequestMethods.Ftp.ListDirectory; FtpWebResponse response = (FtpWebResponse) request.GetResponse(); using (Stream respStream = response.GetResponseStream()) { StreamReader reader = new StreamReader(respStream); //Read each file name from the response for (string fname = reader.ReadLine(); fname != null; fname = reader.ReadLine()) { // Add the file name into a list } } 

如果列表计数为0,则表示没有可用的文件。 您还将从单个请求的列表中获取每个文件名。

使用foreach loop迭代列表值。 并将上面的代码作为一种方法。 将文件名传递给方法。

您还可以确保列表中是否存在特定文件名。

注意:在上面的代码中, 无需向 Url 提供 文件名

肯定有!

尝试将ftpURL设置为有问题的目录名称并request.Method ftpURL to WebRequestMethods.Ftp.ListDirectory;

  var request = (FtpWebRequest)WebRequest.Create("ftp://www.example.com/uploads"); request.Method = WebRequestMethods.Ftp.ListDirectory; request.Credentials = new NetworkCredential(userName, password); using (FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse()) { ... } 

例如,请查看http://timtrott.co.uk/ultimate-guide-ftp/和http://msdn.microsoft.com/en-us/library/ms229716%28v=vs.110%29.aspx (注意:后者使用WebRequestMethods.Ftp.ListDirectoryDetails而不是ListDirectory ,因此您可能需要稍微修改它)。