如何单独从网页返回文本文件和错误日志

时间:2010-09-12 13:16:23

标签: forms cgi

我有一个perl脚本,当从命令行运行时会生成一个具有特定格式的数据文本文件,供其他应用程序使用。该脚本还在stderr上打印信息警告消息。我正在为此写一个网络前端。在用户点击相关表单上的“提交”的理想世界中,页面将显示在包含信息性消息的浏览器中,同时会出现弹出窗口,允许用户将数据的文本文件保存到磁盘。我希望这可以在没有启用javascript的浏览器上工作,所以我认为我想要的可能是不可能的。

我见过的一些网站通过显示包含信息性消息的页面以及要下载的文件的链接来处理此类事情。这似乎意味着必须存储文件并整理某种安全性,以便其他用户无法下载您的文件(不是这对于相关应用程序而言是一个大问题)。

我想知道是否有更优雅的方式来解决这个问题?例如,是否可以使用多部分消息以某种方式实现同​​时返回两条信息?是否可以在不使用javascript的情况下使用信息性消息弹出第二个窗口?抱歉,如果这些看起来像是基本问题 - 我的编程知识属于DNA序列操作算法领域,而不是网页生成。

1 个答案:

答案 0 :(得分:0)

如果(且仅当)数据快速且易于生成,请对错误消息执行一次,然后再次下载。错误消息页面的链接或按钮将重新生成结果并提示下载。

这是一个黑客攻击,因为如果在用户点击下载链接之前基础数据发生变化,您需要考虑该怎么做。小心为文件下载与普通网页正确设置标题,例如

if($submit) { 
    print header(-type=>'application/octet-stream',
         -Content_disposition=>'attachment; filename=foobar.dat');
    Gen_Results();
}

说实话,我只是使用一些小的javascript,因为现在这是一个非常安全的假设。否则,请使用“noscript”标签作为替代方案。