Как я могу вернуть текстовый файл и журнал ошибок с веб-страницы отдельно - PullRequest
0 голосов
/ 12 сентября 2010

У меня есть Perl-скрипт, который при запуске из командной строки генерирует текстовый файл данных с определенным форматом для использования другим приложением.Скрипт также печатает информационные предупреждающие сообщения на stderr.Я пишу веб-интерфейс для этого.В идеальном мире, когда пользователь нажимает «отправить» в связанной форме, в браузере будет отображаться страница, содержащая информационные сообщения, и одновременно появится всплывающее окно, позволяющее пользователю сохранить текстовый файл данных на диск.Мне бы хотелось, чтобы это работало в браузерах без включенного javascript, поэтому я думаю, что то, что я хочу, вероятно, невозможно.

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

Мне интересноесть ли более элегантный способ борьбы с этим?Например, возможно ли использовать составные сообщения, чтобы как-то добиться возврата обеих частей информации за один раз?Можно ли всплывать во втором окне с информационными сообщениями без использования JavaScript?Извиняюсь, если они кажутся основными вопросами - мои познания в области программирования находятся в области алгоритмов манипулирования последовательностями ДНК, а не генерации веб-страниц ..

1 Ответ

0 голосов
/ 26 сентября 2010

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

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

if($submit) { 
    print header(-type=>'application/octet-stream',
         -Content_disposition=>'attachment; filename=foobar.dat');
    Gen_Results();
}

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

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