2011-02-10 15 views
1

私は、perlスクリプトを使用してKMLファイルを作成するためのWebページを用意しています。 perlスクリプト。フォームが送信されると、スクリプトが実行され、kmlファイルが作成され、ユーザーにファイルの保存が促されます。私が不安を感じる唯一の部分は、スクリプトがKMLを作成した後に、ユーザーにファイルを保存させる方法です。私は、ダウンロードを促すperlスクリプトを持っているのか、ダウンロードを促すHTMLページに何かを使用していますか?私はこれを行うための最善の方法はわかりません。ウェブページ上でperlスクリプトを実行した後にファイルを保存する

答えて

10

KMLを構築するようサーバーに指示するためのリンクまたはフォームがある場合は、通常はKMLを生成し、追加のHTTPヘッダーを使用してブラウザに送り返します。あなたが欲しいヘッダは以下のとおりです。「whatever.kmlは」あなたは、ファイルが呼ばれるようにしたいものですattachment;filename=whatever.kml

  • Content-dispositionセット。
  • Content-typeapplication/vnd.google-earth.kml+xmlに設定します。

Content-dispositionは、それを処理しようとする代わりにKMLをダウンロードするようにブラウザに指示する必要があります。

したがって、Perlスクリプトはブラウザにダウンロードを促すように促します。 KMLファイルの内容を想定し

+0

をOK、私は以下を参照してください。それは、KMLが何であるかです。 –

+0

いくつかの余分なHTTPヘッダーで返信するとどういう意味ですか?実際のファイルの最上位の行を意味するのか、ヘッダーを実際のページに送るのでしょうか。私はページにファイルを送信する方法が本当にわからない。私はちょうどファイルを作成し、それをホスティングに格納することができましたが、それは非常に効率的ではありません。 – shinjuo

+0

@shinjuo:Perlスクリプトはサーバ上で動作しており、リモートのHTMLページから実行されています。それで、あなたはHTMLを送り返すのと同じ方法でKMLを送り返します:おそらくそれを印刷します。あなたがブラウザにデータを送り返す方法とHTTPヘッダーを設定する方法の詳細は、スクリプトがどのようにホストされ、どのフレームワークが使用されているかによって異なります:古い学校のCGI、FastCGI、mod_perl、Catalyst、Dancer、... –

3

は$のkmlであり、あなたのような何かやりたいと思います:(?とGoogle地球の関連性)

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; 
関連する問題