У меня есть следующий код доставки файла пользователям, когда они нажимают на ссылку для скачивания. В целях безопасности я не могу просто ссылаться на файл напрямую, поэтому он был настроен для декодирования URL-адреса и передачи файла.
Некоторое время он работал нормально, но недавно у меня возникли проблемы, когда файл начнет загружаться, но нет никаких указаний на его размер.
Из-за этого, когда загрузка должна остановиться, это не так.
Файл имеет размер около 99 МБ, но когда я загружаю его, браузер просто продолжает загружать его за пределы 100 МБ. Я не знаю, что он скачивает, но если я не отменю его, он не остановится.
Итак, мой вопрос: есть ли альтернатива TransmitFile
или способ убедиться, что размер файла отправляется так, чтобы он останавливался в нужное время?
Вот код:
string filename = Path.GetFileName(url);
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/x-rar-compressed";
context.Response.AddHeader("content-disposition", "attachment;filename=" + filename);
context.Response.TransmitFile(context.Server.MapPath(url));
context.Response.Flush();
Я не хочу использовать WriteFile
, потому что я не хочу загружать весь файл в память, так как он очень большой.
Спасибо.