【发布时间】:2013-09-09 13:50:15
【问题描述】:
我不确定如何以最好的方式做到这一点(只是 PHP、PHP + javascript...):
我必须允许用户发送一些表单数据,这些数据生成报告文件与之前生成的其他文件一起列出,每个文件都有一个下载链接。我想允许用户选择在生成后保存它(内容处置标头)。如果他们不想要,该链接仍会在列表中提供。
所以,我尝试通过发送 "Content-Disposition: attachment" 标头来做到这一点。一切都很好(文件存储在服务器中,以便从上述链接进一步获得,它也被发送给用户,以便他们可以立即将其存储在他们的系统中)。问题是报告列表不会使用新报告进行更新,因为我无法同时在响应中获取刷新的 HTML(可以吗?)。
我也尝试发送 Location 标头,但这似乎破坏了之前的功能。
您可能认为我是个白痴,但为了在发送表单后在列表中显示新创建的文件,我还尝试使用 javascript 代替 Content-Disposition 标头,这样一旦文件创建后,脚本调用 window.open(),但这会导致在浏览器中按原样打开文件(CSV 文件):纯纯文本。我想到的另一种选择是首先使用新创建的报告提供 HTML,再加上一个通过 ajax 对服务器进行第二次调用的脚本,然后 PHP 这次将带有文件内容的 Content-Disposition 标头发送回。但这对我来说似乎太扭曲了。或者它是在单一用户交互中做到这一点的最佳和最常见的方式吗?
你怎么看?
【问题讨论】:
标签: php javascript header attachment content-disposition