次の隠しフォームがあります。
<form id='export_svg_container_single_form'
action='exportSVG.pl'
method='post'
target='_blank'
style='display:none;'>
<input type='text'
id='export_svg_container_single_form_data'
name='export_svg_data'
style=';' />
</form>
フィールド値には、export_svg_data
フォーム送信前に SVG ドキュメントが取り込まれます。
送信されると、Perl で記述された次の単純な CGI スクリプトに作用します。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Pretty qw/:standard/;
my $val = param('export_svg_data');
print "Content-Type:image/svg+xml\n";
print "Content-Disposition: inline\n";
print "Content-Description: File to download\n\n";
print $val;
送信されると、非表示のフォームも新しいタブを開き、(この場合) SVG ドキュメントを表示します。その後、エンド ユーザーはウィンドウをファイルに保存できます。
代わりに、フォームを送信するときに、ブラウザー ウィンドウ内で SVG をレンダリングする代わりに、ユーザーがファイル名を選択してドキュメントを保存できるように、ブラウザーに自動的に [保存]または[名前を付けて保存] ダイアログ ボックスを表示させたいと考えています。
JavaScript または CGI スクリプトへの適切な変更を使用してこれを行うにはどうすればよいでしょうか? (必要に応じて、親フォーム ページをそのままにして、新しいタブまたはウィンドウを開きたいと思います。) アドバイスありがとうございます。
もう一度明確にするために、[保存] ダイアログ ボックスを表示するソリューションを探しています。スクリプトがファイル名を決定し、ユーザーの介入なしにランダムな場所に保存することは望ましくありません。