Обращение с ASP.NET MVC FileResult возвращается в вызове Ajax (jQuery)

цель:
Я хочу, чтобы мои пользователи загружали файл на мою веб-страницу. Я хочу, чтобы открылось новое окно и файл был отображен или загружен туда.

моя реализация:
Этот файл, однако, сначала должен быть сгенерирован на стороне сервера, что может занять некоторое время. Когда пользователь нажимает кнопку для загрузки файла, я делаю вызов ajax и показываю анимацию ожидания, пока не получу ответ. Действие контроллера, которое обрабатывает вызов создаст файл (PDF) и вернет FileResult. Теперь в функции succes моего вызова ajax в javascript я получаю данные файла.

: Я понятия не имею, что я должен делать с этими данными, чтобы получить его пользователю.

решение:
Прямо сейчас я использую обходной путь, где я не возвращаю файл в вызове ajax, но сохраняю его в сеансе. В функции succes я делаю window.open("/controller/getPDFFromSession") который будет загружать файл. Однако Я предпочитаю не использовать сеанс для подобных вещей.

спасибо заранее.

1 ответов


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

вы не должны использовать AJAX для загрузки файлов по этому поводу. Вы можете сделать следующее:

  1. пользователь нажимает на кнопку Скачать
  2. используя javascript, вы показываете некоторое изображение прогресса, сообщая ему, что ему придется ждать
  3. используя javascript, вы генерируете и вводите скрытый iframe в DOM, имеющий его src свойство, указывающее на действие контроллера, которое должно генерировать файл
  4. после загрузки iframe вы можете скрыть изображение прогресса