-2
我有一個問題,發送大文件到FTP站點,我想檢查傳輸後的文件大小(有時它有時會失敗)。傳輸是在一個SSIS內,我正在C#中使用Dts.Connections。從FTP獲取文件大小(在SSIS中,使用Dts.Connections)
我的代碼:
public long TransferFile(string file)
{
long filesize = 0L;
try
{
string[] newfile = new[] { file };
ConnectionManager ftpCM = Dts.Connections["ftp_server"];
string remoteDir = Dts.Variables["FtpWorkingDirectory"].Value.ToString();
FtpClientConnection ftpClient = new FtpClientConnection(ftpCM.AcquireConnection(null));
ftpClient.UsePassiveMode = true;
ftpClient.Connect();
ftpClient.Retries = 10;
ftpClient.SetWorkingDirectory(remoteDir);
ftpClient.SendFiles(newfile, remoteDir, true, false);
ftpClient.Close();
}
catch (Exception ex)
{
throw ex;
}
return filesize;
}
我發現使用實例的FtpWebRequest,但我沒有在FTP URI,所以我不明白如何使用此方法。我怎樣才能得到這個文件大小?
UPDATE: 添加此:
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpCM.ConnectionString + remoteDir + "/" + file));
request.Proxy = null;
DtsProperty ServerUsername = ftpCM.Properties["ServerUserName"];
DtsProperty ServerPassword = ftpCM.Properties["ServerPassword"];
request.Credentials = new NetworkCredential(ServerUsername.GetValue(ftpCM).ToString(), ServerPassword.GetValue(ftpCM).ToString());
request.Method = WebRequestMethods.Ftp.GetFileSize;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
filesize = response.ContentLength;
response.Close();
我得到錯誤:該物業是SERVERPASSWORD只寫。
的ftpCM應該是URI。 –
*「我沒有ftp uri可用」* - 那是什麼意思? URL只是提供FTP連接所需的連接信息的另一種格式! - 如果你通過'request.Credentials = new NetworkCredential(...)'分別提供用戶名/密碼,就像'ftp://用戶名:密碼@主機名'或者甚至是'ftp://主機名'。 –
你從哪裏得到「屬性ServerPassword是隻寫的。」? - 完全! –