检查FTP上是否存在文件-Don';我不知道文件的名字
本文关键字:文件 我不知道 -Don FTP 是否 存在 检查 | 更新日期: 2023-09-27 18:28:02
我在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
设置为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
,因此您可能需要稍微修改一下)。