我有以下隐藏形式:
<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 脚本进行适当的更改来做到这一点?(如果需要,我想保持父表单页面不变,即打开一个新选项卡或窗口。)感谢您的建议。
再次澄清一下,我正在寻找一种可以打开“保存”对话框的解决方案。我不希望脚本在没有任何用户干预的情况下确定文件名并将其随机保存在某处。