static void Download(string downloadUrl)
{
Stream responseStream = null;
FileStream fileStream = null;
StreamReader reader = null;
try
{
FtpWebRequest downloadRequest =
(FtpWebRequest)WebRequest.Create(downloadUrl);
FtpWebResponse downloadResponse =
(FtpWebResponse)downloadRequest.GetResponse();
responseStream = downloadResponse.GetResponseStream();
string fileName =
Path.GetFileName(downloadRequest.RequestUri.AbsolutePath);
if (fileName.Length == 0)
{
reader = new StreamReader(responseStream);
Console.WriteLine(reader.ReadToEnd());
}
else
{
fileStream = File.Create(fileName);
byte[] buffer = new byte[1024];
int bytesRead;
//Сюда мне нужно внести изменения.
while (true)
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
}
Console.WriteLine("Download complete.");
}
catch (UriFormatException ex)
{
Console.WriteLine(ex.Message);
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (reader != null)
reader.Close();
else if (responseStream != null)
responseStream.Close();
if (fileStream != null)
fileStream.Close();
}
}
Как правильно оборвать поток докачки с ФТП (C#.NET)
Код:
Теперь в ту часть, которую я пометил для изменения я добавляю следующее:
Код:
while (true)
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
//пошло добавленное
FTPClientDownloadFileProgressArgs e = new FTPClientDownloadFileProgressArgs(read);
if (OnDownloadFileProgress != null)
OnDownloadFileProgress(this, e);
if (e.Cancel == true)
{
break;
}
}
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
//пошло добавленное
FTPClientDownloadFileProgressArgs e = new FTPClientDownloadFileProgressArgs(read);
if (OnDownloadFileProgress != null)
OnDownloadFileProgress(this, e);
if (e.Cancel == true)
{
break;
}
}
Но когда e.Cancel == true программа вылетает с ошибкой:[INDENT]
An unhandled exception of type 'System.Net.WebException' occurred in System.dll
Additional information: Удаленный сервер возвратил ошибку: (451) Локальная ошибка при обработке.[/INDENT]
Что не так делаю?