Могу ли я редактировать объект ответа на вызов Ajax? - PullRequest
2 голосов
/ 18 января 2010

На моей странице есть кнопка ссылки, нажав на которую, я загружаю файл из какой-то системы DMS , а затем отправляю файл после архивации на сервер клиенту, используя response.write.

Но, так как страница изменена, она выдает ошибку.

Можно ли отправить клиенту файл по вызову Ajax ?

Я использую Telerik RadAjax .

Ответы [ 3 ]

1 голос
/ 18 января 2010

Нет причин запрашивать файл с обратным вызовом AJAX, поскольку загрузка файла не обновляет страницу и, следовательно, пользователь не теряет контекст, что обычно является причиной, по которой вы предпочитаете обратный вызов AJAX.

Согласно вашим комментариям, есть 2 способа преодоления проблемы:

  1. Вы можете записывать в поток ответов одновременно с загрузкой файла со второго сервера и, следовательно, отображать ход выполнения в диалоговом окне открытия / сохранения браузера.
  2. Вы можете временно сохранить файл где-нибудь в базе данных / файловой системе и отправить его со вторым запросом, сделанным непосредственно пользователем.

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

1 голос
/ 18 января 2010

Не используйте Response.Write или Response.WriteFile для принудительной загрузки файла, потому что это просто не поможет в этом контексте.

Чтобы сделать то, что вы хотите, сохраните заархивированный файл на диске иперенаправить пользователя в файл загрузки.Вы можете создать временную папку для хранения сжатых файлов, которые вы создаете на лету, и сбрасывать их каждые один час или любой такой заранее заданный интервал времени.Вы должны вызывать это из стандартного неаджексированного вызова с обратной связью.Это сохранит состояние.

Response.Redirect("path-file-to-download");
Response.End();
0 голосов
/ 18 января 2010

Вы можете отправлять любые данные, которые вам нравятся, вы просто должны иметь возможность обрабатывать их в своем JavaScript.

Не так уж много, что JavaScript мог бы сделать с заархивированным файлом (если вы не хотите найтиили написание библиотеки декомпрессии zip в JavaScript).

...