我需要使用从 POST 请求中获得的一些数据生成 PDF 文件。作为对此请求的响应,我想发送生成的 PDF 文件,用户应该得到一个“将文件另存为”对话框。
这一切都应该即时发生。我不想将 PDF 保存到磁盘并通过附加请求提供它。这一切都应该发生在一个请求中。
但我不知道我怎么能做到这样的事情。如果我使用 XMLHttRequest,则无法显示“文件另存为”对话框。另一方面,如果我使用表单,我无法在没有 URL 加密开销的情况下发送 POST 数据。
有人有想法吗?
我需要使用从 POST 请求中获得的一些数据生成 PDF 文件。作为对此请求的响应,我想发送生成的 PDF 文件,用户应该得到一个“将文件另存为”对话框。
这一切都应该即时发生。我不想将 PDF 保存到磁盘并通过附加请求提供它。这一切都应该发生在一个请求中。
但我不知道我怎么能做到这样的事情。如果我使用 XMLHttRequest,则无法显示“文件另存为”对话框。另一方面,如果我使用表单,我无法在没有 URL 加密开销的情况下发送 POST 数据。
有人有想法吗?
最后,我用 2 个请求解决了它。首先将所需的数据发送到服务器并从中创建 PDF,然后返回临时文件的 ID。第二个下载pdf并删除临时文件。
我通过将数据从 javascript 生成的表单字段发布到 php.ini 来做到这一点。
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 显示“另存为”对话框用于文本文件