У меня есть код, который хорошо подходит для небольших файлов, но для больших файлов он генерирует zip по мере необходимости, но не загружает его. Я получаю всевозможные ошибки, включая Timeout (которые мне удалось решить). Другая проблема заключается в том, что он работает в Sync. Самый большой файл, который я создал сам, - это почтовый файл размером 330 Мбайт с прикрепленным к нему около 30 HD-изображений. Но это может даже пойти на ГБ, так как пользователь может сразу загрузить около 100 или даже больше HD-изображений.Загрузить большой файл Async в ASP.NET C#
Для решения обеих проблем, я думал, что загрузка в async
может помочь в обоих случаях. Я хочу предупредить пользователя о том, что их загрузка началась, и что они будут уведомлены, когда они будут готовы.
Я собираюсь отправить поток вниз, если клиент IsConnected
(или удалить файл) или отправить электронное письмо, чтобы попросить их загрузить файл, если они решили выйти из системы (затем удалить файл, используя ссылку офлайн-скачивания) , Я просто не знаю, где и как писать код async
, или если то, что я хочу сделать, на самом деле можно сделать, если пользователь решит выйти из системы.
Вот мой текущий код:
private void DownloadFile(string filePath)
{
FileInfo myfile = new FileInfo(filePath);
// Checking if file exists
if (myfile.Exists)
{
// Clear the content of the response
Response.ClearContent();
// Add the file name and attachment, which will force the open/cancel/save dialog box to show, to the header
Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.Name);
// Add the file size into the response header
Response.AddHeader("Content-Length", myfile.Length.ToString());
// Set the ContentType
Response.ContentType = "application/octet-stream";
Response.TransmitFile(filePath);
Response.Flush();
try
{
myfile.Delete();
}
catch { }
}
}
Благодаря Gridly. Я буду применять это изменение и дам вам знать к завтра. – SollyM