繁体   English   中英

PHP文件通过jQuery AJAX使用POST数据下载

[英]PHP File Download using POST data via jQuery AJAX

所以我知道有很多类似的帖子,但我认为这足以保证自己的问题:

我正在用PHP和jQuery构建一个XLS导出器。 我试图用jQuery发布一个数组(我相信它会像GET查询字符串一样长),并使用它在我的服务器上生成一个XLS文件,然后用户可以下载。

我过去曾使用隐藏的iframe来完成此任务,但由于它们只是重定向到一个url,这需要我使用GET,这让我很紧张。

我的问题是:如果这些文件是由多个用户动态生成的,那么如何将这些文件存储在我的服务器上并链接到它们? 隐藏的iframe是否会链接到单独的PHP脚本,该脚本根据会话ID或类似内容定位THEIR文件?

在此先感谢任何有关我一直被问到的问题的指导:)

可以POST到隐藏的iframe。 因此,您无需担心查询字符串的长度; 您将发布将生成XLS文件的键/值对,然后强制将文件下载到浏览器。

<form method="post" action="/download/xls" target="download_xls"> 
  <fieldset>
    <label>Key 1:</label>
    <input type="text" name="key_1" />
  </fieldset>

  <fieldset>
    <label>Key 2:</label>
    <input type="text" name="key_2" />
  </fieldset>

    <fieldset>
            <input type="submit" value="Submit" /> 
    </fieldset> 
</form>

<iframe id="download_xls" name="download_xls" width="0" height="0" scrolling="no" frameborder="0"></iframe>

更新快速谷歌搜索出现在这篇文章: http//particletree.com/notebook/ajax-file-download-or-not/

基本上,建议是将表单发布到当前页面并通过文件下载进行响应。 这个替代方案对你来说可能已经足够了。

这看起来应该非常简单,但这完全取决于你将这些XLS文件放在哪里。 如果您打算对帖子的响应应该是“保存文件”对话框 - 也就是文件本身 - 那么您所要做的就是确保将“Content-Disposition”标题设置为“attachment”,然后流出文件内容。

如果你要生成文件并保留它,那么你将不得不将它存储在一个带有标识符的地方。 在这种情况下,您只需回复一个具有“下载”链接的普通页面,以便该链接包含文件标识符。 可以触发无论是GET或POST一个,正如我上面描述的服务器将几乎回应。

在我看来,隐藏的<iframe>并没有真正影响到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM