在网页上运行 perl 脚本后保存文件

Posted

技术标签:

【中文标题】在网页上运行 perl 脚本后保存文件【英文标题】:Save a file after a perl script runs on a web page 【发布时间】:2011-06-24 15:42:35 【问题描述】:

我有一个网页,将用于使用 perl 脚本创建 KML 文件。我希望用户将一些数据添加到将在我的 perl 脚本中使用的表单中。提交表单后,它将运行脚本,创建一个 kml 文件,然后提示用户保存文件。我不确定的唯一部分是如何让用户在脚本创建 KML 后保存文件。我是否有 perl 脚本提示下载或使用 html 页面上的某些内容提示下载。我不确定最好的方法。

【问题讨论】:

【参考方案1】:

如果您有告诉服务器构建 KML 的链接或表单,则只需正常生成 KML 并将其与一些额外的 HTTP 标头一起发送回浏览器。你想要的标题是:

Content-disposition 设置为 attachment;filename=whatever.kml 其中“whatever.kml”是您希望调用的文件。 Content-type 设置为 application/vnd.google-earth.kml+xml

Content-disposition 应该告诉浏览器下载 KML 而不是尝试处理它。

所以 Perl 脚本会提示浏览器提示下载。

【讨论】:

(还有 google-earth 的相关性?)好吧,我明白了:这就是 KML。 当你说用一些额外的 HTTP 标头发送回来时,你是什么意思?您是指实际文件的前几行还是将标题发送到实际页面。我什至不确定如何将文件发送到页面。我只是能够创建文件并将其存储在主机上,但这似乎效率不高。 @shinjuo:perl 脚本正在服务器上运行,并且正在从远程 HTML 页面执行,对吗?因此,您会以与发回 HTML 相同的方式发回 KML:打印它(可能)。如何将数据发送回浏览器以及如何设置 HTTP 标头的详细信息将取决于脚本的托管方式和使用的框架:old school CGI、FastCGI、mod_perl、Catalyst、Dancer...【参考方案2】:

假设 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;

【讨论】:

以上是关于在网页上运行 perl 脚本后保存文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Perl 在 Excel 2010 工作表上保存 AsXMLData

django 在第一次脚本运行后每天保存一次数据到文件

按键精灵脚本怎么使用

perl语言中的.pm文件和.pl文件区别

如何在 localhost 中运行 perl 脚本?

怎么把网页上的文档资料下载保存,请指教