Как Вы служите файлу, не оставляя страницу?

Так что я публикую свой ответ, потому что, очевидно, код работает нормально. Мои входные данные были неправильными, поскольку я научился настраивать его для MongoDB, настроил его на поиск входных данных, и обычно для json используется формат {"key": "value"}, поэтому при импутации часть ценности, я хотел, чтобы это было в кавычках для этого. Но, видимо, если вы не поставите его в кавычки, он прекрасно работает как задумано. У меня это хорошо работает в Python, поэтому у меня есть рабочий пример, чтобы посмотреть. Кроме того, эти 1 в части проекта не будут работать, пока я не выведу их обратно из строкового формата и в целочисленный формат, эти 1 действительно означают «истинно», чтобы он проецировал только эти ключи.

13
задан PeterJCLaw 3 March 2009 в 02:23
поделиться

6 ответов

Чтобы постараться не оставлять страницу (если Вы делаете это, страница пытается закрыть себя сначала, так, чтобы это было уверено, что Вы сохранили все, и Вы получаете предупреждающие сообщения, если Вы не имеете), или оставление незаполненного вкладки (который я не люблю, ни использование обесцениваемого целевого атрибута), я использовал iframe, атрибут src которого изменяется в JavaScript.

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

3
ответ дан 1 December 2019 в 23:32
поделиться

Добавьте следующий заголовок, когда файл загрузки будет подаваться:

Content-disposition: attachment; filename=filename.zip

Большинство браузеров будет ожидать для наблюдения, какую вещь они загружают, прежде чем они очистят текущую страницу, и если это что-то, что должно быть загружено как файл, по которому они не переместятся далеко от текущей страницы (они покажут Сохранение диалоговым окном перед страницей, которая может быть отклонена для возврата к странице).

Если однако Вы находите, что определенный браузер действительно перешел далеко от текущей страницы, можно попытаться иметь ссылку на загрузку, содержавшуюся в маленьком iframe, настолько только, что кадр изменяется.

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

12
ответ дан 1 December 2019 в 23:32
поделиться

Если Вы заставляете ссылку открыться в новом окне/вкладке (например, через <a> тег target="_blank" атрибут), это не нарушит содержание текущего окна.

target атрибут удерживается от использования, но широко поддерживается. В зависимости от браузера можно также смочь использовать CSS3 target-name свойство.

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

3
ответ дан 1 December 2019 в 23:32
поделиться

Я верю, направляете ли Вы пользователя к файлу, и тип MIME - что-то, что браузер знает, что должен загрузить по сравнению с рендерингом, браузер не оставит страницу. Например, при обслуживании zip-файла, браузер знал бы, что это был zip-файл и подсказка для загрузки. Но если бы Вы собирались вручить zip-файл от запроса страницы (т.е. /file.aspx?file=myinfo.zip) затем file.aspx должен был бы изменить тип MIME, чтобы быть "приложением/zip", прежде чем передадут ответ обратно для запроса пользователя загрузку.

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

Как верный способ не перенаправления пользователя Вы могли открыть всплывающее окно для загрузки.

0
ответ дан 1 December 2019 в 23:32
поделиться

Мы делаем это на обратной передаче на aspx странице установкой ContentType к "application/octet-stream", затем передавая zipfile потоком с Ответом. BinaryWrite (..) и Ответ. Сброс ().

Дает пользователю, которого делает всплывающее окно "Вы хотите открыть или сохранить" файл.

Страница все еще доступна.

0
ответ дан 1 December 2019 в 23:32
поделиться

Между прочим, определение одного только соответствующего заголовка расположения содержания не могло бы работать во всех браузерах. А именно, я видел, что он не работает в Opera, и IE7 отображает желтую панель предупреждения системы безопасности.

В дополнение к соответствующему заголовку, как описано thomasrutter, способ, которым я сделал это, при помощи скрытой формы:

<form id="download_form" method="get" action=""></form>

Когда пользователь нажимает кнопку, можно управлять атрибутом "действия" формы с URL файла.

Это, кажется, работает во всех браузерах, даже IE7!

0
ответ дан 1 December 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: