下载使用POST数据动态生成的文件

Download file generated on the fly using POST data

本文关键字:文件 动态 数据 POST 下载      更新时间:2023-09-26

我需要使用从POST请求中获得的一些数据生成一个PDF文件。作为对这个请求的响应,我想发送生成的PDF文件,用户应该为其获得一个"保存文件为"对话框。

这一切都应该马上发生。我不想把PDF保存到磁盘上,并附带一个额外的请求。这一切都应该通过一个请求来实现。

但是我不知道我是怎么做到的。如果使用XMLHttRequest,则无法显示"将文件另存为"对话框。另一方面,如果我使用表单,如果没有一些URL加密开销,我就无法发送POST数据。

有人有主意吗?

最后,我用2个请求解决了它。首先将所需的数据发送到服务器,并从中创建PDF,然后返回临时文件的ID。第二个下载pdf并删除临时文件。

我通过将javascript生成的表单字段中的数据发布到php来实现这一点。

var form = $('<form method="post" action="svgoutput/convert.php"> <input type="text"  name="incomingSvgData" value="'+base64_encode(svgDataString)+'"><input type="submit" value="Submit Post"> </form> ');
form[0].submit();

对于IE,提交时表单已在dom中。

在php方面,我进行生成和其他操作(在本例中为SVG到PNG),并设置以下标题:

header("Content-Type: YOURMIMETYPE");
header("Content-Disposition: attachment; filename=YOURFILENAME.EXT");
echo YOURDATA;

下载流畅,甚至在一篇文章中显示另存为对话框。如果你需要"另存为",只需使用标题,比如这里如何显示';另存为';对话框使用PHP的文本文件