Я пишу IHttpHandler
, чтобы передавать большие файлы через ftp-сервер и передавать их пользователям. Если мой обработчик получает ошибку (например, «Удаленный сервер возвратил ошибку: (426) Соединение закрыто; передача прервана.»), Клиент получает незавершенный файл, но он / она этого не знает. Клиент видит сообщение «Загрузка успешно завершена».
Как я могу заставить браузер предупреждать пользователя и говорить, что «Загрузка завершена с ошибками, попробуйте еще раз» / «Загрузка прервана» / «Загрузка отменена» или что-то в этом роде?
public class FTPServ : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.AppendHeader("Content-Disposition", "attachment; filename=test.mxf");
context.Response.ContentType = "application/mxf";
using (WebClient client = new WebClient())
using (Stream stream = client.OpenRead("ftp://user:pass@IP/file"))
{
try
{
var buffer = new byte[65536 * 2];
int bytesReceived;
while ((bytesReceived = stream.Read(buffer, 0, buffer.Length)) != 0)
{
context.Response.BinaryWrite(buffer);
context.Response.Flush();
}
}
catch (Exception ex)
{
//What to do
}
}
}
public bool IsReusable { get { return true; } }
}
Обновить
Пользователь предложил добавить длину содержимого, но я не знаю длину содержимого, и для меня это невозможно узнать.
WebClient
. На самом деле FTP имеет более богатую модель команд, чем get и store. - person ErikHeemskerk   schedule 04.07.2014