0
Я загружаю файл с моего FTP-сервера. Когда он добирается до последних байтов, он зависает и истекает. Я должен был установить тайм-аут на -1, поэтому он не будет тайм-аут, но последние байты никогда не заканчиваются.C# FTP время загрузки файла
Любые идеи?
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://xxx" + "/" + fileDownload);
request.Credentials = new NetworkCredential("xxx", "xxx");
request.UseBinary = true;
request.KeepAlive = true;
request.Timeout = -1;
request.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
FileStream writer = File.Create(@"c:\temp\" + Path.GetFileNameWithoutExtension(fileDownload) + ".csv");
long length = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[2048];
// readCount = responseStream.Read(buffer, 0, bufferSize);
while (responseStream.CanRead)
{
readCount = responseStream.Read(buffer, 0, bufferSize);
writer.Write(buffer, 0, readCount);
}
responseStream.Close();
response.Close();
writer.Close();
Попробуйте его сейчас. Я закончил с использованием Filezilla, и я пропустил около 3000 байт. Надеюсь это работает. Благодарю. –
Кроме того, если вам действительно не нужно буферизировать. вы можете просто ответить 'responseStream.CopyTo (writer);' – tidwall
@jojaba, да, хороший совет. (предполагая, что OP использует .Net> = 4) –