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上的文件大小?
有一个执行ftp传输并获取其正在进行的进度的好例子(假设这是您正在尝试实现的)在以下地址:
http://tim.mackey.ie/FtpWebRequestWithProgressBarCFtp.aspx比起通过http服务器获取部分文件的内容大小,它最有可能提供更好的结果。