在C#中获取FTP上的文件大小
我想在FTP上获取文件的大小。
//Get File Size reqSize = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpPath + filePath)); reqSize.Credentials = new NetworkCredential(Username, Password); reqSize.Method = WebRequestMethods.Ftp.GetFileSize; reqSize.UseBinary = true; FtpWebResponse respSize = (FtpWebResponse)reqSize.GetResponse(); long size = respSize.ContentLength; respSize.Close();
我尝试了以下但得到550错误。 文件未找到/无法访问。 但是,以下代码有效…
reqTime = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpPath + filePath)); reqTime.Credentials = new NetworkCredential(Username, Password); reqTime.Method = WebRequestMethods.Ftp.GetDateTimestamp; reqTime.UseBinary = true; FtpWebResponse respTime = (FtpWebResponse)reqTime.GetResponse(); DateTime LastModified = respTime.LastModified; respTime.Close();
编辑:这对我不起作用的原因是我的FTP服务器不支持SIZE方法。
尝试reqSize.Method = WebRequestMethods.Ftp.GetFileSize;
而不是GetDateTimestamp
这对我有用:
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://servername/filepath")); request.Proxy = null; request.Credentials = new NetworkCredential("user", "password"); request.Method = WebRequestMethods.Ftp.GetFileSize; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); long size = response.ContentLength; response.Close();
//获取FTP文件大小的最简单有效的方法。
var size = GetFtpFileSize(new Uri(“ftpURL”),new NetworkCredential(“userName”,“password”));
public static long GetFtpFileSize(Uri requestUri, NetworkCredential networkCredential) { //Create ftpWebRequest object with given options to get the File Size. var ftpWebRequest = GetFtpWebRequest(requestUri, networkCredential, WebRequestMethods.Ftp.GetFileSize); try { return ((FtpWebResponse)ftpWebRequest.GetResponse()).ContentLength; } //Incase of success it'll return the File Size. catch (Exception) { return default(long); } //Incase of fail it'll return default value to check it later. } public static FtpWebRequest GetFtpWebRequest(Uri requestUri, NetworkCredential networkCredential, string method = null) { var ftpWebRequest = (FtpWebRequest)WebRequest.Create(requestUri); //Create FtpWebRequest with given Request Uri. ftpWebRequest.Credentials = networkCredential; //Set the Credentials of current FtpWebRequest. if (!string.IsNullOrEmpty(method)) ftpWebRequest.Method = method; //Set the Method of FtpWebRequest incase it has a value. return ftpWebRequest; //Return the configured FtpWebRequest. }