Так что я публикую свой ответ, потому что, очевидно, код работает нормально. Мои входные данные были неправильными, поскольку я научился настраивать его для MongoDB, настроил его на поиск входных данных, и обычно для json используется формат {"key": "value"}, поэтому при импутации часть ценности, я хотел, чтобы это было в кавычках для этого. Но, видимо, если вы не поставите его в кавычки, он прекрасно работает как задумано. У меня это хорошо работает в Python, поэтому у меня есть рабочий пример, чтобы посмотреть. Кроме того, эти 1 в части проекта не будут работать, пока я не выведу их обратно из строкового формата и в целочисленный формат, эти 1 действительно означают «истинно», чтобы он проецировал только эти ключи.
Чтобы постараться не оставлять страницу (если Вы делаете это, страница пытается закрыть себя сначала, так, чтобы это было уверено, что Вы сохранили все, и Вы получаете предупреждающие сообщения, если Вы не имеете), или оставление незаполненного вкладки (который я не люблю, ни использование обесцениваемого целевого атрибута), я использовал iframe, атрибут src которого изменяется в JavaScript.
Это работает везде кроме некоторых версий Opera, который я рассмотрел приемлемой потерей (я мог бы зафиксировать это через использование одного из других решений плюс определение браузера позже).
Добавьте следующий заголовок, когда файл загрузки будет подаваться:
Content-disposition: attachment; filename=filename.zip
Большинство браузеров будет ожидать для наблюдения, какую вещь они загружают, прежде чем они очистят текущую страницу, и если это что-то, что должно быть загружено как файл, по которому они не переместятся далеко от текущей страницы (они покажут Сохранение диалоговым окном перед страницей, которая может быть отклонена для возврата к странице).
Если однако Вы находите, что определенный браузер действительно перешел далеко от текущей страницы, можно попытаться иметь ссылку на загрузку, содержавшуюся в маленьком iframe, настолько только, что кадр изменяется.
Я думаю, что это - лучшее решение открытия ссылки в новом окне, потому что некоторые браузеры оставят на виду новое окно даже, после того как определено, что это - файл, который должен быть загружен, таким образом, Вы заканчиваете с пустым окном.
Если Вы заставляете ссылку открыться в новом окне/вкладке (например, через <a>
тег target="_blank"
атрибут), это не нарушит содержание текущего окна.
target
атрибут удерживается от использования, но широко поддерживается. В зависимости от браузера можно также смочь использовать CSS3 target-name
свойство.
Если Ваша цель состоит в том, чтобы абсолютно гарантировать, что главное окно без помех, это вероятно самый безопасный метод, поскольку это эластично против ошибок загрузки.
Я верю, направляете ли Вы пользователя к файлу, и тип MIME - что-то, что браузер знает, что должен загрузить по сравнению с рендерингом, браузер не оставит страницу. Например, при обслуживании zip-файла, браузер знал бы, что это был zip-файл и подсказка для загрузки. Но если бы Вы собирались вручить zip-файл от запроса страницы (т.е. /file.aspx?file=myinfo.zip) затем file.aspx должен был бы изменить тип MIME, чтобы быть "приложением/zip", прежде чем передадут ответ обратно для запроса пользователя загрузку.
Один главный протест здесь состоит в том, если бы файл не существовал по некоторым причинам, то пользователь получил бы 404 и был бы направлен к ошибочной странице.
Как верный способ не перенаправления пользователя Вы могли открыть всплывающее окно для загрузки.
Мы делаем это на обратной передаче на aspx странице установкой ContentType к "application/octet-stream", затем передавая zipfile потоком с Ответом. BinaryWrite (..) и Ответ. Сброс ().
Дает пользователю, которого делает всплывающее окно "Вы хотите открыть или сохранить" файл.
Страница все еще доступна.
Между прочим, определение одного только соответствующего заголовка расположения содержания не могло бы работать во всех браузерах. А именно, я видел, что он не работает в Opera, и IE7 отображает желтую панель предупреждения системы безопасности.
В дополнение к соответствующему заголовку, как описано thomasrutter, способ, которым я сделал это, при помощи скрытой формы:
<form id="download_form" method="get" action=""></form>
Когда пользователь нажимает кнопку, можно управлять атрибутом "действия" формы с URL файла.
Это, кажется, работает во всех браузерах, даже IE7!