c#在while循环中获取FTP文件的大小

本文关键字:文件 FTP 获取 while 循环 | 更新日期: 2023-09-27 17:53:52

我正在写一个程序,可以让我很容易地上传一个文件(拖动文件到exe)到我的FTP服务器。

当上传正在进行时,我试图在另一个线程中获取已经上传的文件大小。

这恰好工作了2次(缓存?),然后它只是停止给我FTP服务器上实际文件大小的反馈。

System.Net.WebRequest req = System.Net.HttpWebRequest.Create(new Uri("http://drop.buto.ch/" + file));
req.Method = "HEAD";
System.Net.WebResponse resp = req.GetResponse();
int ContentLength;
if (int.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
{
  return ContentLength;
}

System.Net.WebClient wc = new System.Net.WebClient();
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
wc.Headers[HttpRequestHeader.CacheControl] = "no-cache";
wc.OpenRead(new Uri("http://drop.buto.ch/" + file));
Int64 bytes_total = Convert.ToInt32(wc.ResponseHeaders["Content-Length"]);
return bytes_total;

我也尝试过用WebRequestMethods.Ftp.GetFileSize实现这一点,但这不会让我以二进制模式访问文件,而是通过ASCII方式返回错误(550)。

如何两次以上获取FTP上的文件大小?

c#在while循环中获取FTP文件的大小

有一个执行ftp传输并获取其正在进行的进度的好例子(假设这是您正在尝试实现的)在以下地址:

http://tim.mackey.ie/FtpWebRequestWithProgressBarCFtp.aspx

比起通过http服务器获取部分文件的内容大小,它最有可能提供更好的结果。