当我运行调用所述SSIS包的作业时,我需要知道给定FTP服务器上是否存在特定文件。目前我正在使用包含以下代码的脚本任务(在SSIS中):
string userName = Dts.Variables["User::ftp_username"].Value.ToString();
string password = Dts.Variables["User::ftp_password"].Value.ToString();
string fileName = Dts.Variables["User::download_file_name"].Value.ToString();
string ftpURL = String.Format("ftp://abc.def.com/{0}", fileName);
try
{
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpURL);
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpRequest.Credentials = new NetworkCredential(userName, password);
using (FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse())
{
Dts.Variables["User::fileExists"].Value = true;
}
}
catch
{
Dts.Variables["User::fileExists"].Value = false;
}
Dts.TaskResult = (int)ScriptResults.Success;
但是,这是调用WebRequestMethods.Ftp.DownloadFile
方法,根据MSDN网站用于从FTP服务器下载文件。 I just need to know if the file exists, not download it
。
另外,有没有更好的方法来检查文件是否存在?
PS。我是C#的新手,所以我很抱歉,如果听起来很天真!
答案 0 :(得分:0)
我会完全删除该脚本并使用SSIS中内置的FTP任务。
发送小文件,将覆盖设置为false并相应处理错误(如果已存在) - 即FTP失败。
如果FTP成功(即文件不存在!) - 别忘了删除它!
答案 1 :(得分:0)
我会使用listdirectory而不是downloadfile。 http://www.niteshluharuka.com/how-to-list-all-files-directories-from-a-ftp-server-in-csharp/