使用POST数据即时下载生成的文件

时间:2012-09-12 15:47:10

标签: javascript rest post xmlhttprequest download

我需要使用从POST请求获得的一些数据生成PDF文件。作为对此请求的响应,我想发送生成的PDF文件,用户应该将“保存文件”作为“-dialog”。

这一切都应该在飞行中发生。我不想将PDF保存到磁盘并通过其他请求提供服务。它应该只用一个请求就可以发生。

但我不知道如何才能实现这样的目标。如果我使用XMLHttRequest,我就无法显示“save-file-as”-dialog。另一方面,如果我使用表单,我无法在没有URL加密开销的情况下发送POST数据。

有没有人有想法?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我这样做是通过将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;

平滑下载甚至只在一篇文章中显示另存为对话框。如果您需要“另存为”,只需使用标题,例如此处How to show 'Save as' dialog box using PHP for text files