1

我正在寻找一种将POST数据传输到后端脚本的方法,使用它动态生成临时文件(临时文件是动态生成的,而不是保存到服务器上的磁盘),然后将其作为客户端提供给客户端下载。

我的后端脚本运行良好。问题是我还没有找到通过 AJAX 调用获取下载提示的方法。

如果我没有POST数据,我会使用类似的东西:

window.location.href = 'path/to/my/script.php';

我所追求的甚至可能吗?是否可以在不诉诸“黑客”的情况下完成,例如将表单动态注入 DOM 并提交,或打开另一个浏览器窗口等?

4

2 回答 2

4
  1. 发出 POST 请求;
  2. 创建资源;
  3. 用资源路径回答;
  4. window.location.href = resourcePath.
  5. [可选] 想要从第三方下载中保护此类资源?附加一个 CSRF 令牌,并且仅当 CSRF 检查通过时才使资源可用 - 否则恭喜,您刚刚赢得了 403 小狗!

如果资源有正确的标题,浏览器会要求你用特定的应用程序保存/打开它。/ 这样。

于 2012-08-31T16:24:44.990 回答
1

如果没有经典的表单提交,您将无法做到这一点,除非您可以通过 GET 以某种方式使下载可用。

但是,这样做无论如何都是一个好主意,因为下载管理器等通常不能很好地与 POST 一起使用 - 所以只需让您的脚本生成一个临时 URL,然后使用您已经在问题中发布的 JavaScript 重定向到该 URL。

于 2012-08-31T16:22:13.683 回答