Каков наилучший способ загрузки файла с сервера

У меня есть интересная задача, которая требует от меня загрузить клиенту динамически сгенерированный файл с сервера (ASP.NET). На стороне клиента это всего лишь JavaScript (jQuery), и клиент может генерировать множество параметров для настройки способа экспорта данных.

Каков наилучший способ загрузки файла с сервера? Должен ли я использовать службу WCF, такую, как описано здесь, или простую страницу, например эту?

Я не знаю, как загрузить файл без перезагрузки страницы (я не уверен, что $.ajax будет работать в этом случае). Может кто-нибудь, пожалуйста, дайте мне какое-то направление по этой теме? Благодарю.

Ответы

Ответ 1

Сначала вы можете создать файл из обработчика .ashx

Скажем, у вас есть файл для загрузки в download.ashx, и у вас есть некоторые параметры для перехода от вашего javascript, например download.ashx?p1=8827&p2=8831, чтобы узнать, что вы собираетесь создавать.

Затем на вашем javascript вы можете сделать переадресацию как

window.location = "download.ashx?p1=8827&p2=8831";

или альтернативу вы можете использовать window.open для того, чтобы подумать

window.open("download.ashx?p1=8827&p2=8831");

и ваш файл начнет загрузку.

Просто убедитесь, что вы установили заголовок вложения и правильный тип содержимого на вашем дескрипторе, например:

  HttpContext.Current.Response.ContentType = "application/octet-stream";
  HttpContext.Current.Response.AddHeader("Content-Disposition", 
                    "attachment; filename=" + SaveAsThisFileName);

Простой и понятный, проверенный и работающий.

Также вы можете подумать над этим ответом: Как обрабатывать ошибки.