【发布时间】:2012-09-12 15:47:10
【问题描述】:
我需要使用从 POST 请求中获得的一些数据生成 PDF 文件。作为对此请求的响应,我想发送生成的 PDF 文件,用户应该得到一个“文件另存为”对话框。
这一切都应该即时发生。我不想将 PDF 保存到磁盘并通过附加请求提供它。这一切都应该发生在一个请求中。
但我不知道我是如何做到这样的事情的。如果我使用 XMLHttRequest,则无法显示“文件另存为”对话框。另一方面,如果我使用表单,则无法在没有 URL 加密开销的情况下发送 POST 数据。
有人有想法吗?
【问题讨论】:
-
单独在客户端使用 JS 生成 PDF 可能是您的选择吗?这可能很有趣:stackoverflow.com/questions/742271/…
-
“URL 加密开销”...那是什么?
-
如果不想使用该 PDF JS 库,则将其临时保存到服务器内存将是另一种选择。这将通过您使用的任何服务器端语言的服务器端代码来完成。但是仍然会有额外的请求开销 :(( - 我猜你真的希望客户端生成 PDF,在这种情况下,我猜那个 JS 库或者一些 Flash 东西会起作用。
-
@haackattack 我猜他的意思是“通过网络发送的 POST 请求的开销”,而不是 SSL 方面的加密。加密可能不是正确的词,但我认为这就是 OP 的意思。
-
@hackattack 使用表单,我无法完全设置 POST 请求的主体,而是可以定义值,然后对其进行 urlencoded。示例正文:“&myjsondata={title:'hello'}”,其中“&myjsondata=”只是不必要的开销。使用 xhr 我可以将正文设置为 "{title:'hello'}"
标签: javascript rest post xmlhttprequest download