Сохраните файл после запуска сценария Perl на веб-странице. - PullRequest
1 голос
/ 10 февраля 2011

У меня есть веб-страница, которая будет использоваться для создания файлов KML с помощью сценария perl. Я хочу, чтобы пользователь добавил некоторые данные в форму, которая будет использоваться в моем сценарии perl.Когда форма отправлена, она запустит скрипт, создаст файл kml, а затем предложит пользователю сохранить файл.Единственная часть, в которой я не уверен, - как пользователь может сохранить файл после того, как сценарий создал KML.Должен ли скрипт perl запрашивать загрузку или использовать что-то на странице HTML, запрашивающей загрузку.Я не уверен, что лучший способ сделать это.

Ответы [ 2 ]

10 голосов
/ 10 февраля 2011

Если у вас есть ссылка или форма, чтобы сообщить серверу о создании KML, просто сгенерируйте KML в обычном режиме и отправьте его обратно в браузер с некоторыми дополнительными заголовками HTTP.Нужные заголовки:

  • Content-disposition установлен на attachment;filename=whatever.kml, где "what.kml" - это то, что вы хотите, чтобы файл назывался.application/vnd.google-earth.kml+xml.

Content-disposition должен сказать браузеру загрузить KML вместо того, чтобы пытаться его обработать.

Таким образом, скрипт Perl будет запрашивать у браузера запросскачать.

3 голосов
/ 10 февраля 2011

Предполагая, что содержимое файла kml находится в $ kml, вам нужно сделать что-то вроде:

use CGI;

my $cgi = new CGI;

print $cgi->header('-Content-disposition' => 'attachment;filename=kml.xml',
                   '-Content-type'        => 'application/vnd.google-earth.kml+xml');

print $kml;
...